Rust
String vs &str
Versi Bahasa Indonesia. Baca dalam Bahasa Inggris
String vs &str
String
- Dimiliki (owned) oleh variabel, artinya variabel mengontrol memori tersebut.
- Dapat dimutasi.
- Ideal untuk string yang ukurannya dapat berubah atau perlu bertahan di luar scope dari reference aslinya.
&str
- Dipinjam (borrowed), string slice yang immutable.
- Mewakili view ke dalam string, bukan memiliki data.
- Biasanya merujuk pada segmen dari String atau string literal.
- Immutable secara default.
Konversi Antara String dan &str
Konversi &str ke String: Gunakan method to_string atau String::from.
let slice: &str = "Hello";
let owned: String = slice.to_string();
let owned2: String = String::from(slice);Konversi String ke &str: Pinjam string menggunakan & atau .as\_str().
let owned: String = String::from("Hello");
let slice: &str = &owned;
let slice2: &str = owned.as_str();Contoh
fn main() {
let x = "hello ";
println!("\"{}\"", x.trim()); // ok
println!("\"{}\"", x + "world"); // error
}- Dalam contoh di atas, fungsi
x.trimakan berfungsi karena tidak memanipulasi string. - Sebaliknya, ia mengembalikan slice dari string asli.
- Tetapi
x + "world"mendapat compile error karena Anda tidak dapat memutasi variabelx: &str.
fn main() {
let x = "hello ".to_string();
println!("\"{}\"", x + "world"); // ok
}- Contoh di atas akan berfungsi karena
xdikonversi menjadiStringdan dapat dimutasi. - Dengan kata lain, fungsi atau method apa pun yang memanipulasi nilai tidak akan berfungsi menggunakan
&strtetapi akan berfungsi menggunakan tipeString.
Referensi
Edit on GitHub
Last updated on