Não consigo compilar o código que converte um tipo de inteiro em string. Estou executando um exemplo do tutorial Rust for Rubyists que tem várias conversões de tipo, como:
"Fizz".to_str()
e num.to_str()
(onde num
é um número inteiro).
Acho que a maioria (se não todas) dessas to_str()
chamadas de função foi descontinuada. Qual é a maneira atual de converter um inteiro em uma string?
Os erros que estou recebendo são:
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
user3358302
fonte
fonte
to_string()
método mas que retornaString
e não uma string literal.to_str()
era um valor de retorno diferente, vou usarto_string()
&'static str
, ou seja, uma fatia de string com um tempo de vida estático, que é impossível de obter usando dados criados dinamicamente. Você só pode criá-los usando literais de string.to_str
me confundiu (que, como você disse, eles renomearam para maior clareza) pensando que ele estava retornando uma fatia de string em vez de umString
objeto.Respostas:
Use
to_string()
( exemplo de execução aqui ):let x: u32 = 10; let s: String = x.to_string(); println!("{}", s);
Você está certo;
to_str()
foi renomeado parato_string()
antes do Rust 1.0 ser lançado para consistência porque uma string alocada agora é chamadaString
.Se você precisa passar uma fatia de string em algum lugar, você precisa obter uma
&str
referência deString
. Isso pode ser feito usando&
uma coerção desreguladora:let ss: &str = &s; // specifying type is necessary for deref coercion to fire let ss = &s[..]; // alternatively, use slicing syntax
O tutorial que você vinculou parece estar obsoleto. Se você estiver interessado em strings no Rust, pode dar uma olhada no capítulo sobre strings da The Rust Programming Language .
fonte