<>语法与常规生命周期绑定有何不同?
请考虑以下代码:
trait Trait<T> {}fn foo<'a>(_b: Box<Trait<&'a usize>>) {}fn bar(_b: Box<for<'a> Trait<&'a usize>>) {}
这两个函数foo
和bar
似乎接受Box<Trait<&'a usize>>
,虽然foo
比更简明做它bar
。他们之间有什么区别?
另外,在什么情况下我需要for<>
像上面那样的语法?我知道Rust标准库在内部使用它(通常与闭包有关),但为什么我的代码需要它呢?
30秒到达战场