【问题标题】:What is the difference between `alloc::rc::Rc` and `std::rc::Rc`?`alloc::rc::Rc` 和 `std::rc::Rc` 有什么区别?
【发布时间】:2015-05-28 20:20:04
【问题描述】:

我很好奇这两个模块在实践中是否有区别?如果没有,那为什么会有这两个重复项呢?

【问题讨论】:

标签: module rust


【解决方案1】:

std::rc::Rc 只是alloc::rc::Rc 的再导出。您可以在src/std/lib.rs 中看到整个rc 模块被重新导出:pub use alloc::rc;

alloc crate 适用于任何类型的内存分配。引用计数、盒装、原始分配和对底层分配器的一般访问(在 Rust 中通常为jemalloc)。由于Rc 类型是如此常见,它应该存在于标准库中,但alloc crate 不应该是标准库的一部分,只是将allocrc 模块重新导出到标准库。这使用户不必关心alloc crate,而是提供了一个干净的标准库,没有容易使用不舒服的奇怪东西。

【讨论】:

  • 您能解释一下为什么它们会被重新出口吗?
  • @DanielFath:这只是灵活性/方便性的问题。一方面,拥有多个低级 crate(corealloccollections、...)更加灵活,这样低级用户(例如内核编写者)可以只挑选 crate可以在他们的上下文中使用,另一方面,用户可以更方便地使用单个板条箱 (std)。
猜你喜欢
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 2012-07-17
相关资源
最近更新 更多