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 num
es 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 devuelveString
y 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_str
me confundió (que como dijiste, cambiaron el nombre para mayor claridad) pensando que estaba devolviendo un segmento de cadena en lugar de unString
objeto.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
&str
referencia 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 syntax
El 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