Loops 如何在for in循环期间指定类型?

Loops 如何在for in循环期间指定类型?,loops,rust,Loops,Rust,看到这个超级简单吗 fn main(){ 因为我在0..10{ println!(“{}”,i*0.5); } } 在Rust 1.0-beta.2上编译的结果是“错误:没有为类型\uu实现traitcore::ops::Mul” 我认为我需要以某种方式指定I的类型,但我正在努力寻找有关如何指定的文档。如果整数变量没有其他约束,它将返回到i32。问题是您同时拥有一个无约束整数和一个浮点数,因此不清楚如何将它们相乘(因此产生了错误)。由于必须将它们强制转换为乘法,因此我将在print语句中强制转

看到这个超级简单吗

fn main(){
因为我在0..10{
println!(“{}”,i*0.5);
}
}
在Rust 1.0-beta.2上编译的结果是“错误:没有为类型
\uu
实现trait
core::ops::Mul


我认为我需要以某种方式指定
I
的类型,但我正在努力寻找有关如何指定的文档。

如果整数变量没有其他约束,它将返回到
i32
。问题是您同时拥有一个无约束整数和一个浮点数,因此不清楚如何将它们相乘(因此产生了错误)。由于必须将它们强制转换为乘法,因此我将在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); 
    }
}
但是,这仍然有相同的错误(但有更多的细节):

:3:24:3:31错误:没有为类型'u16`[E0277]实现特性'core::ops::Mul'
:3 println!(“{}”,i*0.5);
^~~~~~~

正如我前面提到的,不能隐式地将整数和浮点数相乘。您必须决定它的含义。

这似乎是一个防锈设计选择,他们可以为isize执行
impl Mul,反之亦然,但简单的铸造更清晰。@user25064,必须决定输出类型-将整数与浮点数相乘是否产生浮点数或整数?这是每个Rust程序的一个好选择吗?我相信很多语言在使用产品时都会“升级”int以使其浮动。
<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); 
                                ^~~~~~~