Вот как определяется Cow:
Cow
pub enum Cow<'a, B> where B: 'a + ToOwned + ?Sized, { Borrowed(&'a B), Owned(<B as ToOwned>::Owned), }
Почему там B as ToOwned?Чтобы снять 'a и ?Sized границы?
B as ToOwned
'a
?Sized
Это просто явно через полный синтаксис . Он также мог бы быть определен как
pub enum Cow<'a, B> where B: 'a + ToOwned + ?Sized, { Borrowed(&'a B), Owned(B::Owned), }
Этот синтаксис позволяет получить доступ к связанному типу реализации B ToOwned.
B
ToOwned