我来自C(在较小程度上,C++)背景.我写了以下代码片段:
fn main() {
let my_array = [1, 2, 3];
let print_me = |j| println!("= {}", j);
for k in my_array.iter() {
print_me(k);
}
}
Run Code Online (Sandbox Code Playgroud)
这编译并按预期运行,但后来我指定了传递给闭包的参数的类型print_me:
fn main() {
let my_array = [1, 2, 3];
let print_me = |j: i32| println!("= {}", j);
for k in my_array.iter() {
print_me(k);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到了编译错误:
error[E0308]: mismatched types
--> src/main.rs:6:22
|
6 | print_me(k);
| ^
| |
| expected i32, found &{integer}
| help: consider dereferencing the borrow: `*k`
| …Run Code Online (Sandbox Code Playgroud)