// *** before: ***
// связанный тип не мог иметь своих параметров,
// поэтому трейт-одалживатель написать было нельзя
trait Container {
type Item;
fn get(&self) -> Self::Item; // только по значению
}
// *** in version 1.65: ***
trait Container {
type Item<'a> where Self: 'a;
fn get<'a>(&'a self) -> Self::Item<'a>; // можно и ссылкой внутрь себя
}
impl Container for Vec<String> {
type Item<'a> = &'a str;
fn get<'a>(&'a self) -> &'a str {
&self[0]
}
}