Изменения в новых версиях / Rust 1.65

// *** 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>(&'self) -> Self::Item<'a>;   // можно и ссылкой внутрь себя
}

impl Container for Vec<String> {
    type Item<'a> = &'str;
    fn get<'a>(&'self) -> &'a str {
        &self[0]
    }
}