Рассмотрим следующий код:
trait Trait<T> {}
fn foo<'a>(_b: Box<dyn Trait<&'a usize>>) {}
fn bar(_b: Box<dyn for<'a> Trait<&'a usize>>) {}
Обе функции foo и bar, кажется, принимают Box<Trait<&'a usize>>, хотя foo делает это более кратко, чем bar. В чем разница между ними?
Кроме того, в каких ситуациях мне понадобится синтаксис for<>, подобный приведенному выше? Я знаю, что стандартная библиотека Rust использует его внутренне (часто это связано с замыканиями), но зачем моему коду это может понадобиться?