No puedo compilar código que convierta un tipo de un número entero a una cadena. Estoy ejecutando un ejemplo del tutorial de Rust para Rubyists que tiene varias conversiones de tipo, como:
"Fizz".to_str()y num.to_str()(donde numes un número entero).
Creo que la mayoría (si no todas) de estas to_str()llamadas a funciones han quedado obsoletas. ¿Cuál es la forma actual de convertir un número entero en una cadena?
Los errores que obtengo son:
error: type `&'static str` does not implement any method in scope named `to_str`
error: type `int` does not implement any method in scope named `to_str`
string
int
type-conversion
rust
usuario3358302
fuente
fuente

to_string()método pero que devuelveStringy no una cadena literal.to_str()era un valor de retorno diferente, loto_string()&'static str, es decir, un segmento de cadena con una duración estática, que es imposible de obtener utilizando datos creados dinámicamente. Solo puede crearlos utilizando cadenas literales.to_strme confundió (que como dijiste, cambiaron el nombre para mayor claridad) pensando que estaba devolviendo un segmento de cadena en lugar de unStringobjeto.Respuestas:
Utilice
to_string()( ejemplo de ejecución aquí ):let x: u32 = 10; let s: String = x.to_string(); println!("{}", s);Tienes razón;
to_str()se renombróto_string()antes de que se lanzara Rust 1.0 para mantener la coherencia porque ahora se llama a una cadena asignadaString.Si necesita pasar un segmento de cadena en algún lugar, debe obtener una
&strreferencia deString. Esto se puede hacer usando&y una coerción deref:let ss: &str = &s; // specifying type is necessary for deref coercion to fire let ss = &s[..]; // alternatively, use slicing syntaxEl tutorial al que vinculó parece obsoleto. Si está interesado en las cadenas de Rust, puede consultar el capítulo de cadenas de The Rust Programming Language .
fuente