gpt4 book ai didi

rust - <'a, ' b : 'a> mean that the lifetime ' b must outlive the lifetime 'a?

转载 作者:行者123 更新时间:2023-11-29 07:41:47 24 4
gpt4 key购买 nike

我想实现一个类似于调试 builders 的构建器由标准库定义。它们使用如下结构定义:

struct DebugFoo<'a, 'b: 'a> {
fmt: &'a mut std::fmt::Formatter<'b>
}

因为我不明白 <'a, 'b: 'a> 是什么形式意味着我也找不到在 Rust 书或 Rust 引用中提到它(至少关于生命周期),我只是试图删除我不明白的东西看看会发生什么:

struct DebugFoo<'a, 'b> {
fmt: &'a mut std::fmt::Formatter<'b>
}

编译它我得到这个错误:

in type `&'a mut core::fmt::Formatter<'b>`, reference has a longer 
lifetime than the data it references

还有这个注释:

the pointer is valid for the lifetime 'a as defined on the struct at 1:0
but the referenced data is only valid for the lifetime 'b as defined on
the struct at 1:0

这对我来说很有意义:'a'b是不同的生命周期,所以,为了安全起见,Rust(借用检查器?)假设 'a会比'b长寿,并抛出错误。

现在我可以猜到 <'a, 'b: 'a>意味着生命周期 'b必须比生命周期长 'a .我猜对了吗?或者还有更多?我怎样才能找到它的文档?

最佳答案

冒号读作“outlives”,所以

'long: 'short

读作“'long'short 长”。

至于关于该主题的官方文档,到目前为止,我唯一看到的记录是在 RFC on lifetime bounds 中。 .

关于rust - <'a, ' b : 'a> mean that the lifetime ' b must outlive the lifetime 'a?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30768063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com