Nota: ¡esta pregunta contiene un código anterior a 1.0 obsoleto! Sin embargo, la respuesta es correcta.
Para convertir a stra inten Rust, puedo hacer esto:
let my_int = from_str::<int>(my_str);
La única forma en que sé cómo convertir un Stringa intes obtener una porción de él y luego usarlo from_strasí:
let my_int = from_str::<int>(my_string.as_slice());
¿Hay alguna manera de convertir directamente a Stringa int?

use std::str::FromStr;arregla eso. Más sobre from_str si lo desea. doc.rust-lang.org/std/str/trait.FromStr.html#tymethod.from_strRespuestas:
Usted puede convertir directamente a un int utilizando el
str::parse::<T>()método .Puede especificar el tipo de análisis con el operador turbofish (
::<>) como se muestra arriba o mediante una anotación explícita de tipo:Como se menciona en los comentarios,
parse()devuelve aResult. Este resultado será unErrsi la cadena no se puede analizar como el tipo especificado (por ejemplo, la cadena"peter"no se puede analizar comoi32).fuente
parsedevuelve aResult, por lo que debe lidiar con eso adecuadamente para llegar a un tipo integral real.str::parse::<u32>devuelve unaResult<u32, core::num::ParseIntError>yResult::unwrap"desenvuelve resultado, produciendo el contenido de unOkpánicos [OR] si el valor es unaErr, con un mensaje de pánico proporcionada por elErrvalor 's".str::parsees una función genérica , de ahí el tipo entre paréntesis angulares.fuente
let my_u8: u8), entonces no necesita el valor entre paréntesis angulares. También tenga en cuenta que el estilo de Rust predominante indica que:debe mantenerse en el lado izquierdo.let my_u32: u32 = "42".parse().unwrap()Si obtiene su cadena
stdin().read_line, primero debe recortarla.fuente
Con una noche reciente, puedes hacer esto:
Lo que sucede aquí es que
Stringahora se puede desreferenciar en astr. Sin embargo, la función quiere un&str, así que tenemos que pedir prestado nuevamente. Como referencia, creo que este patrón particular (&*) se llama "préstamo cruzado".fuente
Stringen un punto y esperaba que funcionara.my_sttring.as_slice()comomy_string[](actualmenteslicing_syntaxestá controlado por funciones, pero lo más probable es que alguna forma termine en el idioma).Puede usar el método
FromStrdel rasgofrom_str, que se implementa parai32:fuente
Bueno no. ¿Por qué debería haber? Simplemente descarte la cadena si ya no la necesita.
&stres más útil queStringcuando solo necesita leer una cadena, porque es solo una vista del dato original, no su propietario. Puede pasarlo más fácilmente queString, y es copiable, por lo que no es consumido por los métodos invocados. En este sentido, es más general: si tiene unString, puede pasarlo a donde&strse espera un, pero si lo tiene&str, solo puede pasarlo a las funciones que esperanStringsi realiza una nueva asignación.Puede encontrar más información sobre las diferencias entre estos dos y cuándo usarlos en la guía oficial de cadenas .
fuente
.as_slice()cada vez que necesito hacerlofrom_stren una cadena. Argumentos de línea de comandos, por ejemplo, es un lugar donde tengo que hacerfrom_stren todos los argumentos a interpretarlos comoints etcas_slice()es solo un aspecto menor del manejo de cadenas. Por ejemplo, puede usar la sintaxis de corte (s[]) o explotar laDerefcoerción (&*s). Incluso hay una propuesta que permitiría escribir solo&s.&spara una cadena? ¿Daría unastrvuelta? ¿Podrías señalarme la propuesta?strno es con lo que está trabajando; es&str. Son diferentes (pero relacionados). El primero es un tipo de tamaño dinámico que casi nunca usarías directamente, mientras que el segundo es un segmento de cadena que es un puntero grueso. La propuesta se llama coerciones deref ; permitiría coaccionar de&Ta&UsiT: Deref<U>. DesdeString: Deref<str>ya, usted será capaz de obtener&stra partirStringcon sólo&. Todavía está en discusión, pero dudo que suceda antes de 1.0, queda muy poco tiempo.¡Así que básicamente quieres convertir una cadena en un entero bien! esto es lo que uso principalmente y eso también se menciona en la documentación oficial.
Esto funciona tanto para String como para & str Espero que esto también ayude.
fuente