这个问题类似于When is it useful to define multiple lifetimes in a struct?,但希望足够不同.这个问题的答案很有帮助,但重点是一种方法的优点(在struct中使用不同的生命周期进行引用),而不是缺点(如果有的话).像这样的问题,是在寻找如何在创建 struct 时 Select 生命周期的指导.
将其称为tied together版本,因为x和y需要具有相同的生存期:
struct Foo<'a> {
x: &'a i32,
y: &'a i32,
}
将其称为loose版本,因为生命周期可能会有所不同:
struct Foo<'a, 'b> {
x: &'a i32,
y: &'b i32,
}
参考问题的答案给出了一个明确的例子,即客户机代码在给定loose版本的情况下可以编译/运行,但在给定tied together版本的情况下会失败.任何适用于tied together版本的客户端代码都适用于loose版本,并且保证just as safe(即安全),这不是吗?正面不是真的.从struct designer的Angular 来看,loose版本显然更灵活.如果这是一个好的/可接受的答案,那么指导可能是——在 struct always中使用引用时,给它们不同的生存期.
这个建议的缺点是什么,忽略了额外的输入?例如,一个 struct 中有requiring个引用具有相同的生命周期,这有什么好处吗?