如何将整数转换为字符串?


87

我无法编译将类型从整数转换为字符串的代码。我正在运行Rust for 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`

抱歉,如果我不遵循,但是我尝试查找int源,它似乎使用doc.rust-lang.org/0.11.0/std/num/strconv/index.html,但这只会返回字节向量。另外还有to_string()方法,但是返回String而不是文字字符串。
user3358302 2014年

哈哈没关系,我以为to_str()是一个不同的返回值,我将使用to_string()
user3358302 2014年

1
@ user3358302,除非它们确实返回静态已知的文字,否则任何方法都不能返回您称为“文字字符串”的东西,因为这些值具有type &'static str,即具有静态生存期的字符串切片,使用动态创建的数据无法获得这些字符串。您只能使用字符串文字创建它们。
弗拉基米尔·马特维耶夫(Fladimir Matveev)2014年

很高兴知道!我认为该方法使to_str我感到困惑(正如您所说,为了清楚起见,它们被重命名了),认为该方法返回的是字符串切片而不是String对象。
user3358302 2014年

Answers:


122

使用to_string()在此处运行示例):

let x: u32 = 10;
let s: String = x.to_string();
println!("{}", s);

你是对的; 为了保持一致性to_str()to_string()在为了保持一致性而发布Rust 1.0之前,它被重命名为,因为现在已经分配了一个字符串String

如果您需要在某个地方传递字符串切片,则需要从获取&str引用String。这可以通过使用&和反强制来完成:

let ss: &str = &s;   // specifying type is necessary for deref coercion to fire
let ss = &s[..];     // alternatively, use slicing syntax

您链接到的教程似乎已过时。如果您对Rust中的字符串感兴趣,可以浏览Rust编程语言的字符串一章


1
非常感谢一个人,这使事情变得清晰起来:)另外,由于字符串转换似乎仍在生锈,因此我将继续该教程。
user3358302 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.