【发布时间】:2016-12-24 15:19:40
【问题描述】:
我可以限制 T 的哪些特征来允许它编译?
fn one<T>() -> T {
1.0 as _
}
fn main() {
println!("{}", one::<i8>());
}
原样,它给出了这个错误:
rustc 1.14.0 (e8a012324 2016-12-16)
error: non-scalar cast: `f64` as `T`
--> <anon>:2:5
|
2 | 1.0 as _
| ^^^^^^^^
一个好的解决方案是将T 限制为原始数字类型(i8、f64 等)。我找到了std::num::Primitive,但它显然是实验性的,而且夜间编译器无论如何也找不到它。
【问题讨论】:
-
感谢您的链接。很多类似的问题(也许是改进这本书的机会!)。我认为最有帮助的答案this one.
标签: casting rust traits primitive-types