Tôi đang cố gắng tìm ra cách khớp với một Stringtrong Rust.
Ban đầu tôi đã thử kết hợp như thế này, nhưng tôi phát hiện ra Rust không thể ngầm chuyển từ std::string::Stringsang &str.
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
Điều này có lỗi:
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`
Sau đó tôi đã cố gắng xây dựng các Stringđối tượng mới , vì tôi không thể tìm thấy một hàm để truyền a Stringđến a &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"),
}
}
Điều này đã cho tôi các lỗi sau 3 lần:
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
Làm thế nào để thực sự khớp Strings trong Rust?
as_strchưa tồn tại. Tôi đã thay đổi câu trả lời được chấp nhận nhưng cảm ơn tất cả những người đã trả lời câu hỏi này!
stringthing.as_str()có lẽ là đơn giản nhất trong tất cả các câu trả lời; Tôi không thíchas_refbởi vì nó không cần thiết chung chung, có thể dẫn đến lỗi và không rõ ràng, nó không hoàn toàn rõ ràng rằngas_ref()nó sẽ là một&str,as_strđơn giản và rõ ràng.