std::ops::Add 还是 core::ops::Add?
std::ops::Add or core::ops::Add?
这两个特征 (std::ops::Add, core::ops::Add) 提供相同的功能,并且它们都使用相同的示例(都利用 std::ops::Add
)。他们的一组实现者有所不同。
是否应该默认使用 std::ops::Add
?为什么两者都存在,而不是一个?
没有两个特征。有一个特征以几个可互换的名称导出。 这绝非独一无二。实际上 core
中的所有内容也都是从 std
导出的,并且几乎总是在完全相同的路径下(即,您只需将 "core" 前缀替换为 "std")。
至于你应该使用哪一个:如果你有理由不 link 到标准库 (#![no_std]
),那么 std::*
是不可用的,所以显然你使用 core::*
。另一方面,如果您 使用标准库,则应该使用 std::*
重新导出。它更习惯并且需要更少的输入。
它们实际上完全相同,尽管列出的实现者集合略有不同。
core
库专为 bare-metal/low-level 任务而设计,因此比 std
假设操作系统存在时所能提供的更准系统。但是,使用 std
的人也会想要 core
中的内容(例如 Add
或 Option
或其他),这样可以避免同时加载 std
和 core
、std
重新导出 core
、via pub use
中的所有内容。即std
为core
.
中的东西提供了aliases/import个路径
有 some unfortunate error messages 编译器指向项目的原始来源,而不是再导出,它可能不在您正在 extern crate
ing 的板条箱中。
这两个特征 (std::ops::Add, core::ops::Add) 提供相同的功能,并且它们都使用相同的示例(都利用 std::ops::Add
)。他们的一组实现者有所不同。
是否应该默认使用 std::ops::Add
?为什么两者都存在,而不是一个?
没有两个特征。有一个特征以几个可互换的名称导出。 这绝非独一无二。实际上 core
中的所有内容也都是从 std
导出的,并且几乎总是在完全相同的路径下(即,您只需将 "core" 前缀替换为 "std")。
至于你应该使用哪一个:如果你有理由不 link 到标准库 (#![no_std]
),那么 std::*
是不可用的,所以显然你使用 core::*
。另一方面,如果您 使用标准库,则应该使用 std::*
重新导出。它更习惯并且需要更少的输入。
它们实际上完全相同,尽管列出的实现者集合略有不同。
core
库专为 bare-metal/low-level 任务而设计,因此比 std
假设操作系统存在时所能提供的更准系统。但是,使用 std
的人也会想要 core
中的内容(例如 Add
或 Option
或其他),这样可以避免同时加载 std
和 core
、std
重新导出 core
、via pub use
中的所有内容。即std
为core
.
有 some unfortunate error messages 编译器指向项目的原始来源,而不是再导出,它可能不在您正在 extern crate
ing 的板条箱中。