rust - rae - desenvolverse significado
¿Qué es esto desenvolver algo: a veces es desenvolver a veces es unwrap_or (2)
Nota Los detalles en esta respuesta con respecto a
read_line
y~str
corresponden a una versión anterior a la versión 1.0 de Rust. Los conceptos generales sobreunwrap_or
yunwrap_or
siguen siendo relevantes.
Como read_line
podría fallar, devuelve Option<~str>
. Para obtener el valor, puede usar la coincidencia de patrones o uno de los métodos de desenvolver.
La diferencia entre unwrap_or
y unwrap_or
es que unwrap_or
fallará si no hay ningún valor ( None
) pero unwrap_or
devolverá el valor predeterminado especificado ("nothing" en este caso)
Nota Los detalles en esta pregunta con respecto a
read_line
y~str
pertenecen a una versión anterior a la versión 1.0 de Rust. Los conceptos generales sobreunwrap_or
yunwrap_or
siguen siendo relevantes.
Lo he encontrado al leer Rust for Rubyists, es decir:
let mut reader = BufferedReader::new(io::stdin());
let input = reader.read_line().unwrap_or(~"nothing");
Nota Los detalles en esta respuesta con respecto a
read_line
y~str
corresponden a una versión anterior a la versión 1.0 de Rust. Los conceptos generales sobreunwrap_or
yunwrap_or
siguen siendo relevantes.
Rust tiene documentación API que explica estas cosas.
fn read_line(&mut self) -> Option<~str>
Lee la siguiente línea de entrada, interpretada como una secuencia de puntos de código Unicode codificados en UTF-8. Si se encuentra una nueva línea, entonces la nueva línea está contenida en la cadena devuelta.
...
[Luego, algo sobre elevar la condición
io_error
, que es una situación en la que devolveríaNone
-si se trata la condición. Si no es así, fallará y nunca recuperarás nada.]
También devolverá None
si todo se ha leído en el lector.
fn unwrap(self) -> T
Mueve un valor de un tipo de opción y lo devuelve.
Útil principalmente para obtener cadenas, vectores y punteros únicos fuera de los tipos de opciones sin copiarlos.
...
Es decir,
-
Some(a).unwrap()
devuelvea
-
None.unwrap()
falla
fn unwrap_or(self, def: T) -> T
Devuelve el valor contenido o un valor predeterminado
Es decir,
-
Some(a).unwrap_or(b)
devuelvea
-
None.unwrap_or(b)
devuelveb