Rust 无法访问循环内向量的元素

Rust 无法访问循环内向量的元素,rust,Rust,我正试图通过println打印向量的元素!在一个循环中 这是我犯的错误,我不知道我做错了什么。请告知 错误[E0277]:类型“[i32]”不能由“i32”索引` | 21 | s=v[outercount]; |^^^^^^^^^^^^^^^^^^^^^切片索引的类型为“usize”或范围为“usize”` | =帮助:“i32”未实现特性“std::slice::SliceIndex”` =注:由于'std::vec::vec'的'std::ops::Index'impl上的要求,因此需要`

我正试图通过println打印向量的元素!在一个循环中

这是我犯的错误,我不知道我做错了什么。请告知

错误[E0277]:类型“[i32]”不能由“i32”索引` | 21 | s=v[outercount]; |^^^^^^^^^^^^^^^^^^^^^切片索引的类型为“usize”或范围为“usize”` | =帮助:“i32”未实现特性“std::slice::SliceIndex”` =注:由于'std::vec::vec'的'std::ops::Index'impl上的要求,因此需要`
如错误消息所示,需要使用索引而不是i32:


我知道这实际上可能对您的代码@Sumchans没有帮助,但我不得不编写一个版本。我希望它能帮助某人:

fn main() {
   let v = vec![1,4,2,4,1,8];
   v.iter().for_each(|n| println!("{}", n));
}

几天前,我遇到了类似的问题,但在我尝试用rust制作气泡排序程序时,我遇到了不同的问题。如我所见,我希望你得到了你的答案。我认为您想要打印向量的方式在语法上是不正确的,下面是一个在循环中打印向量的示例。希望这对你有帮助

fn main(){
let v = vec![1,3,5,7,9]; 
for i in v.iter(){ //also for i in &v 
  println!("{:?}",i);
 }
}
你也可以使用

let outercount = v[0]; //rust will automatically infer this as [i32]

1.这不是惯用的生锈2。编译器会告诉你为什么3.你需要使用usize来索引vector@Stargateur,我理解错误消息,但不知道如何将其放入代码中。你能帮个忙吗?你为什么不做for循环?对于s-in&v{print!{},s;}@loganfsmyth,我已经减少了我的代码,使它更容易发布到这里。我有一个for循环,在这个循环中有enumerate。如果我像你提到的那样使用for循环,如何使outercount变量步进到向量中的下一个元素?对不起,我不明白你在描述什么结构。我更喜欢n in&v{println!{},n;}。它更容易理解,也同样地道。谢谢@matiu,你所有的答案真的很有帮助。谢谢,谢谢@trentcl。了解了实现相同逻辑的几种方法。这肯定会有所帮助。谢谢@Taimoor。帮助其他开发人员总是很愉快的。
fn main(){
let v = vec![1,3,5,7,9]; 
for i in v.iter(){ //also for i in &v 
  println!("{:?}",i);
 }
}
let outercount = v[0]; //rust will automatically infer this as [i32]