向量pop返回Option

问题描述

我是初学者。我看到向量的pop()方法返回了<Option>类型。如何获得pop()值作为变量的正确方法?

    let mut queue: Vec<[usize; 2]> = Vec::new();
    queue.push([1,2]);
    queue.push([3,4]);

    let coords = queue.pop();
    println!("{},{}",coords[0],coords[1]);

error[E0608]: cannot index into a value of type `std::option::Option<[usize; 2]>`
  --> src/main.rs:99:24
   |
99 |     println!("{},coords[1]);
   |  

解决方法

如果您知道queue永远不会为空,那么您可以unwrap进行选择:

pop

否则,您可以对其进行匹配,并在let coords = queue.pop().unwrap(); 情况下进行所需的任何处理:

None

另一种可能性是有用的,如果您只想在选项为let coords = match queue.pop() { Some(top) => top,None => { // … handling … } }; 时做某事,则使用if let

Some

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...