loops - 如何在 for-in 循环中指定类型?

标签 loops rust

<分区>

看这个 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/

相关文章:

java - 为什么这个循环改变了?

rust - 为什么 7.4 章片段中定义了 `thread_rng`

Rust mut borrow 在闭包中失败

rust - 如何编写将代码注入(inject)函数的自定义属性

循环和 map 引用

Javascript - deepEqual 比较和递归

java - 重新排列 int 数组中的 int 值 java

rust - 如何在actix_web单元测试中获取响应的主体?

rust - 如何在测试范围的mod中使用注释和micro?

c++ - 为什么添加空格会使编译器进入无限循环?