Skip to main content

SetVariant

Derive Macro SetVariant 

Source
#[derive(SetVariant)]
Expand description

Adds set_*() methods for each unit variant on the given enum.

ยงExample

#[derive(Debug, mkutils_macros::SetVariant, PartialEq)]
enum MyEnum {
  Foo,
  Bar,
  Baz(String),
}

// adds
// ```rust
// impl MyEnum {
//   pub fn set_foo(&mut self) -> &mut Self {
//     *self = Self::Foo;
//
//     self
//   }
//
//   pub fn set_bar(&mut self) -> &mut Self {
//     *self = Self::Bar;
//
//     self
//   }
// }
// ```
// as can be seen in

let mut my_enum = MyEnum::Foo;

my_enum.set_bar();

std::assert_eq!(my_enum, MyEnum::Bar);