Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::mem;
- trait Alteration {
- fn method(&self);
- }
- enum State {
- Foo {
- var: Box<Alteration>
- },
- Bar {
- var: Box<Alteration>
- },
- Invalid,
- }
- struct Uploader {
- state: State
- }
- impl Uploader {
- fn problem(&mut self) {
- let old_state = mem::replace(&mut self.state, State::Invalid);
- let next_state = match old_state {
- State::Foo { var } => State::Bar { var },
- _ => return,
- };
- self.state = next_state;
- if let State::Invalid = self.state {
- panic!();
- }
- }
- }
- fn main() {
- }
Add Comment
Please, Sign In to add comment