std :: ops :: Add或core :: ops :: Add?

时间:2016-03-11 22:23:07

标签: rust standard-library

这两个特征(std::ops::Addcore::ops::Add)提供相同的功能,并且它们都使用相同的示例(均使用std::ops::Add)。他们的实现者有所不同。

是否应该默认使用std::ops::Add?为什么两者相对而不存在呢?

2 个答案:

答案 0 :(得分:12)

尽管实施者的列表略有不同,但事实上它们完全相同。

textFieldFoo.text = NSString(format: "%.1f mg", bar) as String 库专为裸机/低级任务而设计,因此假设存在操作系统,它比core提供的更准分。但是,使用std的人也会想要std中的内容(例如coreAdd或其他),以避免同时加载Optionstdcore重新导出stdvia pub use的所有内容。也就是说,corestd中的内容提供了别名/导入路径。

some unfortunate error messages编译器指向项目的原始来源,而不是reexport,它可能不在您core的箱子中。

答案 1 :(得分:10)

没有两个特征。有一个特征是以几个可互换的名称导出的。 这远不是唯一的。事实上,core中的所有内容也会从std导出,并且几乎总是在完全相同的路径下(即,您只需将"核心"前缀替换为" std&# 34。)

至于您应该使用哪一个:如果您有理由不链接到标准库(#![no_std]),那么std::*一个不可用,所以很明显您使用{ {1}}。另一方面,如果执行使用标准库,则应使用core::*重新导出。这是更习惯的,需要更少的打字。