我应该限制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
,但它显然是实验性的,而且夜间编译器也找不到它。