taker

Make FSM on any that that has Default implementation.

How to use it:

```rust

[derive(Debug, PartialEq, Eq)]

enum Fsm { State1, State2, Transition, }

impl Default for Fsm { fn default() -> Self { Self::Transition } }

let mut fsm = Fsm::State1; match fsm.take() { Fsm::State1 => { fsm.set(Fsm::State2); } Fsm::State2 => { fsm.set(Fsm::State1); } _ => { panic!("Stucked in transition state..."); } } ```