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)鉴于这种特性的明显不稳定性,我现在对在我的项目中添加另一个依赖项感到谨慎,如果它不能保持稳定和兼容。
这里有哪些正确的路线图?
答案 0 :(得分:4)
使用箱子。编译器将确保创建有效的二进制文件。您可能不会注意到文件大小的任何有趣变化。货物将确保实际使用箱子很容易。
特质的“稳定性”不是特质的固有特性。大多数情况下,特质的有用性值得怀疑。标准库必须保守 - 在Rust 1.x 的整个生命周期中必须支持任何存在的东西(并且没有Rust 2.x的计划)。因此,向标准库添加内容非常有限。
这就是板条箱是一流公民的原因。现在决定由数量的维护者支持这个特性需要多长时间。如果他们遵循semver(他们应该),那么如果他们不再支持它就应该非常明显。此外,一旦您选择了一个版本的crate进行编译,它将永远不会改变,直到您执行cargo update
,因此您可以安全地使用它。
在最糟糕的情况下,假设num crate决定放弃这个特性。在这种情况下,你可以简单地复制实现并生成自己的包。