Я пытаюсь сопоставить тип данных общего поля структуры и реагировать соответствующим образом. Моя общая идея была такой (не компилируется):Как совместить данные в 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!");
}
Сообщение об ошибке от 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!"),
| ^^^^^^
То, что я хотел, чтобы x
соответствовать первый, и y
, чтобы соответствовать второй. На самом деле я не уверен, что я хочу сделать, но что бы добиться желаемого эффекта?
Короткий ответ «не сразу же». Вы можете найти этот вопрос полезным: [Как Rust реализует отражение?] (Http://stackoverflow.com/q/36416773/1233251) –
Rust использует 'CamelCase' для структур, перечислений и признаков. Вы должны использовать 'Foo'. – Shepmaster