Ben String
Rust bir a maç nasıl anlamaya çalışıyorum .
Başlangıçta böyle eşleme çalıştım, ama üstü kapalı yayın yapamazsanız Rust anladım std::string::String
etmek &str
.
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
Bu hata var:
error[E0308]: mismatched types
--> src/main.rs:4:9
|
4 | "a" => println!("0"),
| ^^^ expected struct `std::string::String`, found reference
|
= note: expected type `std::string::String`
found type `&'static str`
Sonra yeni inşa etmeye çalıştı String
Ben döküm için bir işlev bulamadık gibi nesneleri String
bir etmek &str
.
fn main() {
let stringthing = String::from("c");
match stringthing {
String::from("a") => println!("0"),
String::from("b") => println!("1"),
String::from("c") => println!("2"),
}
}
Bu bana aşağıdaki hatayı 3 kez verdi:
error[E0164]: `String::from` does not name a tuple variant or a tuple struct
--> src/main.rs:4:9
|
4 | String::from("a") => return 0,
| ^^^^^^^^^^^^^^^^^ not a tuple variant or struct
String
S Rust ile nasıl eşleştirilir ?
as_str
Henüz mevcut olmadığında cevap kabul edildi . Kabul edilen cevabı değiştirdim ama bu soruyu cevaplayan herkese teşekkür ederim!
stringthing.as_str()
muhtemelen tüm cevapların en açık olanıdır; Ben sevmiyorumas_ref
o hatalar yol açabilir, gereksiz genel, ve gibi aleni değil, çünkü tamamen o belli değilas_ref()
bir olacak&str
,as_str
basit ve net.