gpt4 book ai didi

Rust 曾经有大量的指针类型;他们是什么,每个人都发生了什么?

转载 作者:行者123 更新时间:2023-12-03 11:32:32 26 4
gpt4 key购买 nike

Rust 曾经有大量的指针类型:

Older Rusts had many more pointer types, they’re gone now.

https://doc.rust-lang.org/guide-pointers.html

我希望了解其中一些人的年表,以便更深入地了解语言的演变。

Q1:它们是什么?是否有以前版本的在线 Rust 文档可供我查看,或者我必须重新编译旧文档才能这样做?

Q2:随着语言的发展,每种指针类型会变成什么(例如变得多余、功能在其他地方合并、作为特性被删除等)?

最佳答案

来自指南的存档: screenshot of cheat sheet

有趣的是,Rust 似乎曾经调用 Box、Rc 和 Arc 指针类型。因此,不幸的是,该指南声称 Rust 曾经拥有的指针类型似乎实际上仍在该语言中。然而,这并不意味着这些类型背后仍然没有故事。 Rust 实际上曾经有 two different box types , ~T@T ,但这些是 removed in version 0.11.0赞成BoxGc ,分别(信不信由你,Rust当时实际上有一个垃圾收集器)。在 1.0.0 alpha , box关键字(早在 0.1.0 就已在该语言中使用)是重新设计的功能门控,and the discussion is still happening to this day .在那次更改之后,Box 没有发生真正的重大变化。除了几个额外的 trait 实现和方法添加。

现在,对于 Arc 和 Rc。 Arc似乎已添加 as early as version 0.3 , 和 Rcadded in version 0.7 .此外,与现代 Rust 不同,Rc没有办法获得可变引用,而是选择了 having both Rc and RcMut . Arc更奇怪的是,有一个不可变的 ARC , 一个 MutexARC (而不是当前的 Arc<Mutex<T>> ),and a mutable RWARC .在 version 0.8 ,尽管出于某种原因不在更新日志中, ARC finally got lowercased to Arc .在 version 0.9 ,更多未记录的更改发生在 Rc从额外的 crate 移到标准,RcMut被神秘地删除了。一个 UnsafeArc已添加到 std::sync::arc , 但是 extra::arc::Arc留下了。在 version 0.10 , Weak添加了循环中断,在该版本之前,Rust 出人意料地尝试静态阻止 Rc循环。在 version 0.11.0 ,对 Arc 进行了全面更改, 分离 ArcMutex , 但是 Arc仍然是不可变的并且依赖于 Arc<RWLock<T>>模拟Arc的当前行为。奇怪的是,Rc 仍然不可变。在 version 1.0.0 , Rc终于拿到了get_mut我们知道和喜爱的方法。但是,Arc仍然依赖 RwLock . Arc有点慢,得到 an unstable get_mut function in 1.3.0 .

现在,有趣的一个。 Gc 发生了什么事?它已被删除 in version 0.12由于是 poorly implemented, confusing, and the only reason why many obsolete language features existed at the time ,并 promise 将来会重新访问垃圾收集器。正如我们现在所知,这从未发生过。

至于您是否可以查看旧文档,是的,您可以。它们都托管在 static.rust-lang.org .只需转到 https://static.rust-lang.org/doc/VERSION_NUMBER/CRATE_NAME/index.html ,如 https://static.rust-lang.org/doc/0.7/std/index.html .

关于Rust 曾经有大量的指针类型;他们是什么,每个人都发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64769333/

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