generic associated type
An associated type that takes its own type or lifetime parameters.
A GAT (type Item<'a> where Self: 'a) lets a trait's associated type depend on a lifetime or type chosen per use, as in lending iterators.
Examples
type Item<'a> where Self: 'a;lets a trait's item borrow from&'a mut self, whichIterator's plaintype Itemcan't express.