具有多个生命周期参数的结构的真实示例是什么?

What is a real-life example of a struct with more than one lifetime parameter?

我是 Rust 的新手,但我认为我对生命周期参数的概念已经足够了解了。当通过引用接受多个参数时,我可以看到这对 方法 有多么有用。但是,我想不出一个例子,当 struct 会保存对两个具有不同生命周期的不同变量的引用。 Rust book 没有提供具有多个生命周期的结构的示例。

围绕 Elision 2.0 的讨论参考了 "structs with a single lifetime parameter",其重点是使使用只有一个生命周期参数的类型更容易,这向我建议,这是生命周期最常见的用例 - 一个结构有 no 生命周期,或者它有 one 生命周期。

任何人都可以为我提供一个具有多个生命周期参数的结构的实际示例吗?

当您在结构中使用引用时,您使用的是生命周期。

有时您可以对结构的各种引用使用相同的生命周期,但您不能总是这样做。

生命周期是指值存在的时间(在创建和删除之间)。这是借用检查器将检查的约束。如果你给两个字段相同的生命周期,你添加了一个通常无法验证的约束,从而限制了你的结构的可能用途。

Here's a real world example:

pub struct DisplayableLine<'s, 'l, 'p> {
    pub skin: &'s MadSkin,
    pub line: &'p FmtLine<'l>,
    pub width: Option<usize>, // available width
}

结构本身通常是短暂的。皮肤和线条来自不同的来源。你可以拥有一个你只是为了展示而制作的皮肤,并且你想立即放下它。或者你刚刚制作的一条线,同时保持你的皮肤。为两个字段提供相同的生命周期会比必要的限制更多。

当然,当您的结构总是引用一起创建和删除的值时,没有必要拥有两个生命周期。但实际上这种情况很少见。