9 fn fun1(e1: &Enum, e2: &Enum) -> usize {
11 (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
12 (&Enum::Foo { foo: _ }, &Enum::Bar { bar: _ }) => 1,
13 (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
14 (&Enum::Bar { bar: _ }, &Enum::Foo { foo: _ }) => 3,
18 fn fun2(e1: &Enum, e2: &Enum) -> usize {
20 (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
21 (&Enum::Foo { foo: _ }, _ ) => 1,
22 (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
23 (&Enum::Bar { bar: _ }, _ ) => 3,
28 let foo = Enum::Foo { foo: 1 };
29 let bar = Enum::Bar { bar: 1 };
31 assert_eq!(fun1(&foo, &foo), 0);
32 assert_eq!(fun1(&foo, &bar), 1);
33 assert_eq!(fun1(&bar, &bar), 2);
34 assert_eq!(fun1(&bar, &foo), 3);
36 assert_eq!(fun2(&foo, &foo), 0);
37 assert_eq!(fun2(&foo, &bar), 1); // fun2 returns 0
38 assert_eq!(fun2(&bar, &bar), 2);
39 assert_eq!(fun2(&bar, &foo), 3); // fun2 returns 2