最佳答案
考虑以下代码:
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 标准库在内部使用它(通常与闭包相关) ,但是为什么我的代码需要它呢?