You can use pattern matching in function parameters. examples:
struct S {
field1: String,
fields2: usize,
}
fn test_fn(S { field1, .. }: S) {
println!("{}", field1);
}
enum Id {
V1(usize),
V2(usize),
}
fn test_fn((Id::V1(id) | Id::V2(id)) : Id) {
println!("{}", id);
}