gpt4 book ai didi

rust - 我怎样才能更好地记住何时使用哪种生命周期语法?

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

现在我已经对 Rust 中生命周期的基本概念有了一点熟悉,我面临着一个不同的问题。我很难理解生命周期语法。

在 Rust 中何时使用哪种语法进行生命周期注解是否有一般规则?在我看来,语法有很多变体,当我想在某处添加生命周期时,我总是不得不四处寻找正确的语法。

我遇到了:

without lifetime                with lifetime

Vec<Route> Vec<Route<'a>>
&Route &'a Route
impl Clone for Route impl<'a> Clone for Route<'a>
|| ||:'a

语法有很多不同的变体。有时你从 Vec<Route><Vec<Route<'a>> , 意味着你必须引入尖括号。有时你只是从 &Route&'a Route所以你只添加一个 'a到您现有的代码。不同的时间你必须添加 :'a .我也不明白为什么我们需要添加 <'a>impl关键字也是如此。

为了更清楚,为什么不说生命周期总是^a或者上面的列表可以归结为:

without lifetime                with lifetime

Vec<Route> Vec<Route^a>
&Route &^a Route (or Route^a ?)
impl Clone for Route impl Clone for Route^a
|| ||^a

最佳答案

Rust 区分生命周期声明和使用。生命周期仅与引用一起使用。

&'a Bar声明生命周期 a 由对 Bar 的引用使用。

<'a>宣布一生。表示前一项,例如Foo<'a>fn do_stuff<'a>包含一个或多个需要生命周期注解的引用。

据我所知,||实际上是对闭包对象的引用(目前正在重做闭包)。

编辑:为了完整性,'static不必声明生命周期。

关于rust - 我怎样才能更好地记住何时使用哪种生命周期语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24271657/

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