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]);
}