Bagaimana cara mengubah dari integer menjadi string?

94

Saya tidak dapat mengkompilasi kode yang mengubah tipe dari integer menjadi string. Saya menjalankan contoh dari tutorial Rust for Rubyists yang memiliki berbagai jenis konversi seperti:

"Fizz".to_str()dan num.to_str()(dimana numadalah integer).

Saya pikir sebagian besar (jika tidak semua) to_str()panggilan fungsi ini sudah tidak digunakan lagi. Apa cara saat ini untuk mengubah integer menjadi string?

Kesalahan yang saya dapatkan adalah:

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`
pengguna3358302
sumber
maaf jika saya tidak mengikuti tetapi saya sudah mencoba mencari sumber int dan tampaknya menggunakan doc.rust-lang.org/0.11.0/std/num/strconv/index.html tetapi ini hanya mengembalikan vektor byte . Selain itu ada to_string()metode tetapi yang mengembalikan Stringdan bukan string literal.
user3358302
haha tidak masalah, saya pikir to_str()itu nilai pengembalian yang berbeda, saya akan menggunakanto_string()
user3358302
1
@ user3358302, tidak ada metode yang dapat mengembalikan sesuatu yang Anda sebut "string literal" kecuali metode tersebut mengembalikan literal yang diketahui secara statis karena nilai ini memiliki tipe &'static str, yaitu, potongan string dengan masa pakai statis, yang tidak mungkin diperoleh menggunakan data yang dibuat secara dinamis. Anda hanya dapat membuatnya menggunakan literal string.
Vladimir Matveev
senang mendengarnya! Saya pikir metode ini to_strmembingungkan saya (seperti yang Anda katakan, mereka menamainya untuk kejelasan) mengira itu mengembalikan potongan string, bukan Stringobjek.
user3358302

Jawaban:

131

Gunakan to_string()( menjalankan contoh di sini ):

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

Kamu benar; to_str()diubah namanya menjadi to_string()sebelum Rust 1.0 dirilis untuk konsistensi karena string yang dialokasikan sekarang dipanggil String.

Jika Anda perlu meneruskan potongan string di suatu tempat, Anda perlu mendapatkan &strreferensi dari String. Ini dapat dilakukan dengan menggunakan &dan pemaksaan deref:

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

Tutorial yang Anda tautkan tampaknya sudah usang. Jika Anda tertarik dengan string di Rust, Anda dapat melihat bab string di The Rust Programming Language .

Vladimir Matveev
sumber
1
Thanks a lot man, ini menyelesaikan semuanya :) Juga saya akan melalui tutorial itu karena konversi string sepertinya sesuatu yang masih berubah pada karat.
user3358302