String
Rust でaを一致させる方法を理解しようとしています。
私は最初にこのようにマッチングを試みましたが、Rustが暗黙的にstd::string::String
to からキャストできないことを理解しました&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
、a 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
Rustで実際にsを一致させる方法は?
@Zorfその通りです。回答が
—
Jeroen
as_str
まだ存在しない場合は、回答が受け入れられました。承認済みの回答を変更しましたが、この質問に回答したすべての人に感謝します!
stringthing.as_str()
おそらくすべての答えの中で最も簡単です。私は好きではないas_ref
、それはバグにつながることができ、必要以上に一般的だし、明示的なないので、それは完全にそれがクリアされていないas_ref()
ことになるだろう&str
、as_str
単純明快です。