"的std :: VEC" vs" collections :: vec"

时间:2014-12-22 06:06:38

标签: vector rust

Rust包含2个相同的(通过api)vec模块:

http://doc.rust-lang.org/std/vec/index.html
http://doc.rust-lang.org/collections/vec/index.html

有什么区别?哪个更好?

1 个答案:

答案 0 :(得分:7)

collections crate并不意味着直接使用;你应该使用std箱子。

std::vec只是collections::vec重新出口;它是完全相同的模块。

如果您想使用Vec,则甚至无需使用use导入它,因为它是prelude的一部分。前奏中定义的项目始终是隐式导入的。如果您需要从该模块导入其他项目,请写下use std::vec::X;而不是use collections::vec::X;


为什么collections存在?它适用于编写不在操作系统上运行的Rust应用程序或 操作系统的应用程序的用户。 std提供了依赖于操作系统的功能,但std的某些部分没有;那些被拆分成较小的板条箱,可以更容易地重复使用。但是,这些包装箱在不久的将来不会稳定,而std将为Rust 1.0保持稳定,所以除非你真的需要避免std,否则只需使用std

您可以通过将std添加到您的包根来告诉编译器您不想使用#![no_std]