1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#![no_std] /// Trait to implement the `.toogle()` method, to switch between two values /// /// ## Exemple /// ```rust /// use toogle::Toggle; /// /// #[derive(PartialEq, Eq)] /// pub enum TwoEnum { /// Value1, Value2 /// }; /// /// impl Toggle for TwoEnum { /// fn toggle(&mut self) { /// *self = match *self { /// TwoEnum::Value1 => TwoEnum::Value2, /// TwoEnum::Value2 => TwoEnum::Value1, /// } /// } /// } /// /// ``` pub trait Toggle { fn toggle(&mut self); } impl Toggle for bool { fn toggle(&mut self) { *self = !*self; } } #[cfg(test)] mod tests { use crate::Toggle; #[test] fn test_toogle() { let mut test = false; assert_eq!(test, false); test.toggle(); assert_eq!(test, true); test.toggle(); assert_eq!(test, false); } }