C++示例:
for (long i = 0; i < 101; i++) {
//...
}
在《铁 rust 》中,我尝试过:
for i: i64 in 1..100 {
// ...
}
我可以很容易地在for循环之前声明一个let i: i64 =
变量,但是我更愿意学习正确的方法,但是这导致了
error: expected one of `@` or `in`, found `:`
--> src/main.rs:2:10
|
2 | for i: i64 in 1..100 {
| ^ expected one of `@` or `in` here
4条答案
按热度按时间ggazkfy81#
你可以在你在范围内使用的一个常量上使用一个整数后缀。类型推断会完成剩下的工作:
mbyulnm02#
不,不可能在
for
循环中声明变量的类型。相反,更一般的方法(例如,也适用于
enumerate()
)是通过在循环体内部解构项来引入let
绑定。示例:
brccelvz3#
如果循环变量恰好是返回泛型类型的函数调用的结果:
您可以使用 * turbofish * 来指定类型:
也可以使用 * 完全限定语法 *:
另见:
wa7juj8i4#
曾经有一个讨论的地方,这是要求,这是由一个实际的RFC跟进。
不过,讨论似乎被推迟了,因为没有足够的人真正关心这个主题。
目前,如果您确实想要进行注解,最好的选择似乎是:
如您所见,如果类型不匹配,则会失败:
x一个一个一个一个x一个一个二个x
当然,由于自动解引用,该方法不能区分
&i32
和&&i32
,这在某些情况下可能是个问题:但总的来说,这应该会给潜在的审稿人带来足够的信心,在我看来。