这两个特征(std::ops::Add,core::ops::Add)提供相同的功能,并且它们都使用相同的示例(均使用std::ops::Add
)。他们的实现者有所不同。
是否应该默认使用std::ops::Add
?为什么两者相对而不存在呢?
答案 0 :(得分:12)
尽管实施者的列表略有不同,但事实上它们完全相同。
textFieldFoo.text = NSString(format: "%.1f mg", bar) as String
库专为裸机/低级任务而设计,因此假设存在操作系统,它比core
提供的更准分。但是,使用std
的人也会想要std
中的内容(例如core
或Add
或其他),以避免同时加载Option
和std
,core
重新导出std
,via pub use
的所有内容。也就是说,core
为std
中的内容提供了别名/导入路径。
有some unfortunate error messages编译器指向项目的原始来源,而不是reexport,它可能不在您core
的箱子中。
答案 1 :(得分:10)
没有两个特征。有一个特征是以几个可互换的名称导出的。 这远不是唯一的。事实上,core
中的所有内容也会从std
导出,并且几乎总是在完全相同的路径下(即,您只需将"核心"前缀替换为" std&# 34。)
至于您应该使用哪一个:如果您有理由不链接到标准库(#![no_std]
),那么std::*
一个不可用,所以很明显您使用{ {1}}。另一方面,如果执行使用标准库,则应使用core::*
重新导出。这是更习惯的,需要更少的打字。