<分区>
看这个 super 简单playpen
fn main() {
for i in 0..10 {
println!("{}", i*0.5);
}
}
在 Rust 1.0-beta.2 上编译的结果是“错误:特征 core::ops::Mul<_>
没有为类型 _
实现”
我认为我需要指定 i
的类型不知何故,但我正在努力寻找有关如何这样做的文档。
<分区>
看这个 super 简单playpen
fn main() {
for i in 0..10 {
println!("{}", i*0.5);
}
}
在 Rust 1.0-beta.2 上编译的结果是“错误:特征 core::ops::Mul<_>
没有为类型 _
实现”
我认为我需要指定 i
的类型不知何故,但我正在努力寻找有关如何这样做的文档。
最佳答案
当整数变量没有其他约束时,它将退回到 i32
。问题是您同时拥有不受约束的整数和 float ,因此不清楚如何将它们相乘(因此出现错误)。由于无论如何都必须将它们强制转换为乘法,所以我只在 print 语句中强制转换循环变量:
fn main() {
for i in 0..10 {
println!("{}", (i as f64) * 0.5);
}
}
我不知道是否可以实际指定循环变量的类型。在这种情况下,我只是确保明确定义了范围:
fn main() {
for i in 0..10_u16 {
println!("{}", i * 0.5);
}
}
但是,这仍然有相同的错误(但有更多细节):
<anon>:3:24: 3:31 error: the trait `core::ops::Mul<_>` is not implemented for the type `u16` [E0277]
<anon>:3 println!("{}", i * 0.5);
^~~~~~~
正如我之前提到的,您不能隐式地将整数和 float 相乘。你必须决定你想要它的意思。
关于loops - 如何在 for-in 循环中指定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732140/