Types Vector pop()返回选项
我是铁锈初学者。我看到向量的Types Vector pop()返回选项,types,rust,vec,Types,Rust,Vec,我是铁锈初学者。我看到向量的pop()方法返回类型。获取变量的pop()值的正确方法是什么 let mut queue:Vec=Vec::new(); push([1,2]); push([3,4]); 让coords=queue.pop(); 普林顿!(“{},{}”,coords[0],coords[1]); error[E0608]:无法索引为'std::option::option'类型的值` -->src/main.rs:99:24 | 99 | println!(“{},{}”,c
pop()
方法返回
类型。获取变量的pop()
值的正确方法是什么
let mut queue:Vec=Vec::new();
push([1,2]);
push([3,4]);
让coords=queue.pop();
普林顿!(“{},{}”,coords[0],coords[1]);
error[E0608]:无法索引为'std::option::option'类型的值`
-->src/main.rs:99:24
|
99 | println!(“{},{}”,coords[0],coords[1]);
|
如果您知道当您在队列上调用pop
时,队列将永远不会为空,您可以选择:
let coords = queue.pop().unwrap();
否则,您可以在None
情况下匹配它并执行任何需要的处理:
let coords=match queue.pop(){
一些(顶部)=>顶部,
无=>{
//…处理…
}
};
如果您只想在选项为Some
时执行某项操作,另一种可能很有用,即使用:
谢谢
.unwrap()
是解决我的问题的好办法。但是现在我有另一个问题,因为coords
变量的类型是[usize,
,但我需要[usize,2]
。我得到不匹配的类型
错误。你能帮我一下吗?@FelAA:Hm,我想应该是[usize;2]
。您能将错误消息编辑到您的问题中吗?这很奇怪,但经过一些更改后,我无法再现此错误:)我认为这是IDE的错误消息,因为实际上我在usize
和u8
不匹配时出错。无论如何,非常感谢!queue.pop()
返回选项类型的原因是什么?
let coords = queue.pop().unwrap();
if let Some(coords) = queue.pop() {
println!("{}, {}", coords[0], coords[1]);
}