gpt4 book ai didi

rust - rust 生命周期仅指引用吗?

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

我正在努力了解 Rust 的生命周期(因为官方指南并没有很好地解释它们)。

rust lifetimes 是仅指引用,还是也可以指基本/原始值?

最佳答案

生命周期是值和对所述值的引用之间的链接。

为了理解这个链接,我将使用一个破损的平行线:房屋和地址。

房子是一个物理实体。它在某个时候建在一 block 土地上,会存在几十年或几百年,期间可能会多次翻新,很可能在某个时候被摧毁。

一个地址是一个逻辑实体,它可能指向一个房子,或者指向其他物理实体(一 block 田地、一所学校、一个火车站、一家公司的总部,...)。


房子的lifetime比较明确:它代表了房子可以使用的时间,从 build 的那一刻到被摧毁的那一刻。这间房子可能会在这段时间进行多次翻新,曾经是一个简单的小屋可能最终会成为一个成熟的庄园,但这与我们无关;就我们的目的而言,这座房子活着经历了这些转变。只有它的创建和最终的破坏才重要……尽管当我们拆除屋顶时,如果没有人恰好在卧室里可能会更好。

现在,假设您是一名房地产经纪人。你不把你卖的房子放在你的办公室里,这是不切实际的;但是,您可以保留他们的地址!

如果没有生命周期的概念,您的客户有时会提示,因为您发送给他们的地址...是垃圾场的地址,根本不是您拍摄的那栋可爱的两层楼房子.您可能还会收到警察局的一些询问,问为什么有人拿着您办公室的小册子被发现在刚被毁的房子里,随后的诉讼可能会导致您的业务倒闭。

这显然会给您的业务带来风险,因此您应该寻求更好的解决方案。如果每个地址都可以用它所指的房子的生命周期来标记,这样你就知道不要让人们死亡(或失望)?


你可能已经在那个垃圾转储中认出了 C 手动内存管理策略;在 C 中, 房地产经纪人 开发人员要确保您的地址(指针/引用)始终指的是居住房屋。

然而,在 Rust 中,引用用特殊标记标记:'enough;它代表所引用值的生命周期的下限。

当编译器检查您对引用的使用是否安全时,它会提出以下问题:

Is the value still alive ?

值(value)是否会在 100 年后存在并不重要,只要它的生命周期足够长“足够供您使用。

关于rust - rust 生命周期仅指引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476772/

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