刚开始使用 Rust,我正在尝试一些数组的东西,但遇到了一些困难。第一个问题是初始化。我可以创建一个“空”数组并迭代元素来填充它,但如何从范围初始化?:
let mut arr: [i32; 5] = [0; 5]; // this works
// let mut arr: [i32; 5] = 1..5 //this doesn't
Run Code Online (Sandbox Code Playgroud)
第二个问题是尝试通过 i32 上的数组的简单映射来初始化数组。这不起作用:
let mut arr2: [i32; 5] = arr.iter().map(|&x| x + 1).collect();
Run Code Online (Sandbox Code Playgroud)
事实上,即使打印(不分配)也不起作用:
println!("{:?}", arr.iter().map(|&x| x + 1).collect());
// the above fails with: "type annotations needed: cannot infer type for type arameter `B` declared on the associated function `collect`"
Run Code Online (Sandbox Code Playgroud)
有什么智慧的话可以提供吗?