मैं यह पता लगाने की कोशिश कर रहा हूं कि String
रस्ट में मैच कैसे होगा ।
मैंने शुरू में इस तरह से मिलान करने की कोशिश की थी, लेकिन मुझे लगा कि रस्ट का कोई मतलब नहीं std::string::String
है &str
।
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
यह त्रुटि है:
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`
मैंने तब नई String
वस्तुओं का निर्माण करने की कोशिश की , क्योंकि मैं एक String
को एक कास्ट करने के लिए फ़ंक्शन नहीं ढूंढ सका &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"),
}
}
इससे मुझे 3 बार निम्न त्रुटि हुई:
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
में रस्ट में मैच कैसे होता है ?
as_str
किया गया जब अभी तक अस्तित्व में नहीं था। मैंने स्वीकार किए गए उत्तर को बदल दिया, लेकिन इस सवाल का जवाब देने वाले सभी लोगों को धन्यवाद!
stringthing.as_str()
शायद सभी उत्तरों में से सबसे सीधा है; मुझे यह पसंद नहीं हैas_ref
क्योंकि यह अनावश्यक रूप से सामान्य है, जो बग को जन्म दे सकता है, और स्पष्ट नहीं है, यह पूरी तरह से स्पष्ट नहीं है किas_ref()
यह एक होने जा रहा है&str
,as_str
सरल और स्पष्ट है।