Próbuję dopasować na typ danych ogólnego pola struktury i odpowiednio reagować. Moja ogólna idea była tak (kod nie skompilować):Jak dopasować typ danych w Rust?
struct foo<T> {
zaz: String,
bar: T,
}
fn main() {
let x = foo::<String> {
zaz: "Hello".to_string(),
bar: "world".to_string(),
};
let y = foo::<u32> {
zaz: "Hello".to_string(),
bar: 5,
};
match x.bar {
String => println!("It's a string!"),
u32 => println!("It's a u32!"),
_ => println!("Something else"),
};
println!("end of program!");
}
Komunikat o błędzie od rustc
:
error[E0001]: unreachable pattern
--> src/main.rs:18:9
|
18 | u32 => println!("It's a u32!"),
| ^^^ this is an unreachable pattern
|
note: this pattern matches any value
--> src/main.rs:17:9
|
17 | String => println!("It's a string!"),
| ^^^^^^
error[E0001]: unreachable pattern
--> src/main.rs:19:9
|
19 | _ => println!("Something else"),
| ^this is an unreachable pattern
|
note: this pattern matches any value
--> src/main.rs:17:9
|
17 | String => println!("It's a string!"),
| ^^^^^^
Chciałem było dla x
dopasować pierwszy i y
dopasować Druga. W rzeczywistości nie jestem pewien, co chcę zrobić, ale co by osiągnąć pożądany efekt?
Krótka odpowiedź brzmi „nie tuż nietoperza”. Przydatne może się okazać to pytanie: [W jaki sposób Rust implementuje odbicie?] (Http://stackoverflow.com/q/36416773/1233251) –
Rust używa nazwy "CamelCase" do konstrukcji, wyliczenia i cech. Powinieneś używać 'Foo'. – Shepmaster