Рассмотрим следующий код:
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 использует его внутренне (часто это связано с замыканиями), но зачем моему коду это может понадобиться?