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