как понять "для чего"?
Ну вот вернулочь что-то. Что дальше с ним делать?
на нём методы реализованы, методы вызывать
Одни и те же методы?
крч, это gpio. контекст: enum PinMode { Input(...), Output(...), } pub fn configure_pin(mode: PinMode) -> ??? { match mode { Input(_) => GpioPin<...> Output(_) => GpioPin<...> } }
еее эмбед раст. он существует
а были поводы сомневаться?)
я вроде делал такое на энаме или трейтах
trait PinMode { type GpioPin; } fn configure_pin<T: PinMode>() -> T::GpioPin
тогда надо не PinMode::Output, а отдельный тип там:/
Ну да, только так
Покажи методы, скажу что можно а что нельзя
Это не сработает, потому что функция должна иметь возможность разные PinMode внутри одного вызова возвращать.
Это если параметр у функции не тип
Но опять упираемся
Альтернатива: передавать пачку FnOnce/интерфейс для них, которые будут принимать соответствующий пин (и возвращать значение одного типа при желании)
это уже завтипы какие то хз
Даже не близко
Техника типа "Ghosts of departed proofs" может Вам помочь. Или нет — не могу обещать. 😅
Обсуждают сегодня