Я не могу скомпилировать код, преобразующий тип из целого числа в строку. Я использую пример из учебника Rust для Rubyists, в котором есть различные преобразования типов, такие как:
"Fizz".to_str()
и num.to_str()
(где num
- целое число).
Я думаю, что большинство (если не все) этих to_str()
вызовов функций устарели. Как в настоящее время преобразовать целое число в строку?
Я получаю следующие ошибки:
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
источник
источник
to_string()
метод, который возвращает,String
а не буквальную строку.to_str()
это другое возвращаемое значение, я буду использоватьto_string()
&'static str
, то есть фрагмент строки со статическим временем жизни, который невозможно получить с использованием динамически созданных данных. Вы можете создавать их только с помощью строковых литералов.to_str
сбил меня с толку (который, как вы сказали, они переименовали для ясности), думая, что он возвращает фрагмент строки вместоString
объекта.Ответы:
Используйте
to_string()
( рабочий пример здесь ):let x: u32 = 10; let s: String = x.to_string(); println!("{}", s);
Ты прав;
to_str()
был переименован вto_string()
до того, как был выпущен Rust 1.0 для согласованности, потому что теперь вызывается выделенная строкаString
.Если вам нужно передать где-то строковый фрагмент, вам нужно получить
&str
ссылку изString
. Это можно сделать с помощью&
и приведения deref:let ss: &str = &s; // specifying type is necessary for deref coercion to fire let ss = &s[..]; // alternatively, use slicing syntax
Учебник, на который вы ссылались, кажется устаревшим. Если вас интересуют строки в Rust, вы можете просмотреть главу о строках в языке программирования Rust .
источник