на структурах? Без ассоциированных типов.
Условно, мне нужен трейт Foo, и чтобы он был реализован для структуры в двух вариациях, что-то типа Foo<Bar> и Foo<Baz>, чтобы я мог вызывать это как-то типа <MyStruct as Foo<Bar>>::needed_func().
Я пробовал через супертрейт (trait Foo: FooBar + FooBaz), но тогда приходится эти самые трейты реализовывать для MyStruct и ещё добавлять пустой импл для Foo, а сама функция needed_func в итоге определена на FooBar и FooBaz. Но работает.
Я пробовал через специализацию, чтобы needed_func была определена на Foo. Но там почему-то словил conflicting implementations, а ещё не придумал, как объявить параметр трейта, ибо трейт параметром трейта быть не может, а объявлять простую структуру как-то тупо и хз сработало бы. Короче потыкал специализацию и сдался.
У меня найтли, принимаются любые решения, которые достаточно complete, чтобы хотя бы компилироваться.
Хм. Вроде бы всё делается достаточно прямолинейно: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=b8439337b7c51e4c5ec8245720b50433
Обсуждают сегодня