То, что вы хотите, - это «более высокие границы черт» (HRTB, или просто добрый мальчик ). Они выглядят так: for<'a> T: 'a
. Этот пример просто означает: «для каждого возможного времени жизни 'a
, T
должен ...». В вашем случае:
trait Bar
where
Self: for<'a> TryFrom<&'a [u8], Error = ()>,
Вы также можете указать это требование как супер-черту, привязанную напрямую вместо предложения where
:
trait Bar: for<'a> TryFrom<&'a [u8], Error = ()> { ... }
И да, теперь это просто означает, что все разработчики из Bar
должны реализовывать TryFrom<&'a [u8], Error = ()>
для всех возможных времен жизни. Это то, что вам нужно.
Рабочая площадка