Signed
特性used to exist in the standard library,但是现在不见了。一年前,是someone asked about implementing signed traits on reddit,但是线索还没有得出结论,因此作者继续在Rust语言讨论网站with similar results上提问。
现在num crate中有一个Signed
特性,但是我有两个问题:
1)我不太了解将 crate 导入到项目中是否会产生更大的文件大小开销,特别是如果我仅使用其中的一个特征。
2)考虑到这种特性的明显不稳定,如果不想保持稳定和兼容,我现在很乐意在我的项目中添加另一个依赖项。
在这里绘制图表的正确路线是什么?
最佳答案
使用 crate 。编译器将确保创建有效的二进制文件。您可能不会注意到文件大小有任何有趣的变化。 cargo 将确保实际使用 crate 很容易。
特性的“稳定性”不是特性的固有属性。大多数情况下,该特性的有用性值得怀疑。标准库必须是保守的-Rust 1.x整个生命周期内的生命周期都必须得到支持(目前尚无针对Rust 2.x的计划)。因此,向标准库中添加内容非常受限制。
这就是为什么 crate 是这样的头等公民。现在决定由numer crate的维护者决定支持该特性多长时间。如果他们遵循semver(并且应该这样做),那么一旦他们放弃对它的支持,这将是非常明显的。同样,一旦选择了要编译的 crate 版本,在执行cargo update
之前,它永远不会改变,因此可以放心使用。
在最坏的情况下,说num Crate决定放弃这个特性。在这种情况下,您可以简单地复制实现并生成自己的 crate 。
关于dependencies - 在Rust中指定或导入Signed特性的推荐方式是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40749058/