Guest User

Untitled

a guest
Jul 20th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.48 KB | None | 0 0
  1. use std::mem;
  2.  
  3. struct Diamond {}
  4.  
  5. enum State {
  6. Early(Diamond),
  7. Late(Diamond),
  8. }
  9.  
  10. fn advance(state: &mut State) {
  11. unsafe {
  12. let new_state = match state {
  13. State::Early(diamond) => {
  14. State::Late(mem::replace(diamond, mem::uninitialized()))
  15. }
  16. _ => unreachable!(),
  17. };
  18. mem::forget(mem::replace(state, new_state));
  19. }
  20. }
  21.  
  22. fn main() {
  23. let mut state = State::Early(Diamond {});
  24. advance(&mut state);
  25. }
Add Comment
Please, Sign In to add comment