我有一个结构:
struct C {
field: Box<Fn()>
}
struct D(C)
struct E(C)
struct F(D)
Run Code Online (Sandbox Code Playgroud)
C我想更改to的字段&Fn()以适应命名函数。我遇到了麻烦,因为 Rust 结构中的引用字段需要一个生命周期参数。C现在必须是:
struct C<'a> {
field: &'a Fn()
}
Run Code Online (Sandbox Code Playgroud)
然后对于D, E, F, 我还必须提供生命周期参数:
struct D<'a>(c<'a>)
struct E<'a>(C<'a>)
struct F<'a>(C<'a>)
Run Code Online (Sandbox Code Playgroud)
想象一下D, E,F有很多impl功能...现在代码需要进行大量更改才能在很多地方添加生命周期参数。
有没有办法避免这样做?的生命周期参数C不能是,'static因为我也有一堆本地定义的闭包。
Matthieu M. 回答了“我怎样才能避免增加一生”的问题,这可能解决了你的问题,但没有解决你的问题:
当我添加生命周期时,有没有办法避免向所有下游结构添加生命周期
不,没有办法。生命周期注释是您用来参数化类型的另一种泛型类型。使用该类型的所有内容都必须了解其参数化的具体生命周期。生命周期的一个重要原因就是因为这个 - 为了拥有一个安全的系统,编译器(和你!)必须知道结构体包含对可能超出范围的内容的引用。一旦发生这种情况,参考资料就不再有效。
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |