| impl<T: SomeTrait1> MaybeSetter for T {
| ---------------------------------------------------- first implementation here
...
60 | impl<T: SomeTrait2> MaybeSetter for T {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
Так нельзя Никто не мешает сторонней библиотеке сделать свой тип TT, для которого реализовать и SomeTrait1, и SomeTrait2
нужна специализация по типу default fn. в стабле можно только один for любой T с трейтом. у вас может выйти, что тип имеет и T1 и T2 одновременно и раст не определит fn вы можете сделать (свои) аноним типы и на них навесить ваши T
подробнее в конце?
например сделать пустую структуру, даже две. и сделать на каждый из них impl и прозрачный конверт, например в основной структуре сделать функцию trait2(&self) которая вернет структуру с этим trait или даже impl Trait2
пример как сделано в path, там есть функция display которая имеет trait Display
Звучит довольно разумно, но, наверное, придётся много кода менять под "новые" структуры, да?
Обсуждают сегодня