什么是这个解开东西:有时它是不解开的,有时它是unwrap_or
注意关于
read_line和read_line这个问题的read_line属于Rust的1.0之前的版本。 关于unwrap_or和unwrap_or的一般概念仍然相关。
我在为Rubyists读Rust的时候遇到过:
 let mut reader = BufferedReader::new(io::stdin()); let input = reader.read_line().unwrap_or(~"nothing"); 
	
注意关于
read_line和read_line这个答案的read_line属于Rust的1.0之前的版本。 关于unwrap_or和unwrap_or的一般概念仍然相关。
 因为read_line可能会失败,所以返回Option<~str> read_line Option<~str> 。 为了得到这个值,你可以使用模式匹配或者其中一种解包方法。 
  unwrap_or和unwrap_or之间的区别是,如果没有值( None ), unwrap将失败,但unwrap_or将返回指定的默认值(在这种情况下为“无”) 
注意关于
read_line和read_line这个答案的read_line属于Rust的1.0之前的版本。 关于unwrap_or和unwrap_or的一般概念仍然相关。
铁锈有API文档解释这些事情。
  BufferedReader.read_line : 
fn read_line(&mut self) -> Option<~str>读取下一行input,解释为UTF-8编码的unicode码点序列。 如果遇到换行符,则换行符包含在返回的string中。
…
[然后提高
io_error条件,这是一种情况下,它将返回None– 如果条件处理。 如果不是这样就会失败,所以你永远不会收回任何东西。]
 如果读者已经阅读了所有的内容,你也会得到None 。 
  Option.unwrap : 
fn unwrap(self) -> T将值从选项types中移出并返回。
主要用于获取选项types中的string,向量和唯一指针而不复制它们。
…
那是,
-   Some(a).unwrap()返回a
-   None.unwrap()失败
  Option.unwrap_or : 
fn unwrap_or(self, def: T) -> T返回包含的值或默认值
那是,
-   Some(a).unwrap_or(b)返回a
-   None.unwrap_or(b)返回b