4

I would like to pass in the parameters what arm of the enum I need to match, something like this:

enum D {
    A(i64),
    B(u64),
    C(u64, u64),
}
let a = D.A(10);
println!(a.is_of(D.A)); // true
println!(a.is_of(D.B)); // false

I know I can use matching rules for this, but I'd like this is_of method to take as an input of the enum options for my purposes.

Shepmaster
  • 326,504
  • 69
  • 892
  • 1,159
asosnovsky
  • 1,979
  • 2
  • 22
  • 37

1 Answers1

11

You cannot.

  • It is not possible to pass types as function parameters.
  • Enum variants are not types to start with.

If you are OK using a macro instead of a function, see

See also:

Shepmaster
  • 326,504
  • 69
  • 892
  • 1,159
  • 5
    Man.. I still don't know why enums cannot be passed as parameters in Rust. It's really counter-intuitive. – Matthew S Jul 09 '20 at 05:55