Мне непонятно, что вы имеете в виду для случая, когда arg1 и arg2 установлены на true
- хотите ли вы, чтобы первая ветвь if была взята, или обе?
Если оба - то на самом деле вы должны просто использовать несколько ifs.
if args.arg1 { println!("Argument 1 is true!") }
if args.arg2 { println!("Argument 2 is true!") }
Если должен встречаться только один, предпочитая arg1, тогда вы можете использовать struct destructure
match args {
Args { arg1:true, ..} => println!("Argument 1 is true!"),
Args { arg2:true, ..} => println!("Argument 2 is true!"),
_ => println!("Neither is true")
}
Вы можете использовать совпадение и для сопоставления с более сложными случаями
match args {
Args {arg1:true, arg2:false, ...} => println!("TF"),
}
Однако, если не более одного аргумента может быть истинным одновременно, у вас действительно есть перечисление, и вы, вероятно, должны обработатьэто как
enum Arg {
None,
Arg1,
Arg2
}
fn main() {
let args:Args = get_argument();
match args {
Args::None => println!("none"),
Args::Arg1 => println!("Argument 1 is true!"),
Args::Arg2 => println!("Argument 2 is true!")
}
}