Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Big struct
- struct Thing;
- // Zero-sized states
- struct Open;
- struct Closed;
- // State machine A
- struct Foo<S> {
- thing: Thing,
- state: S,
- }
- // State machine B
- struct Bar<S> {
- thing: Thing,
- state: S,
- }
- // Actuall Object I want to use
- struct ComposedMachine<X, Y> {
- foo: Foo<X>,
- bar: Bar<Y>,
- }
- enum States {
- Open(ComposedMachine<Open, Open>),
- Closed(ComposedMachine<Closed, Closed>),
- OpenClosed(ComposedMachine<Open, Closed>),
- ClosedOpen(ComposedMachine<Closed, Open>),
- }
- fn determine_state() -> States {
- if true {
- States::Open(ComposedMachine {
- foo: Foo {
- thing: Thing,
- state: Open,
- },
- bar: Bar {
- thing: Thing,
- state: Open,
- },
- })
- } else {
- States::Closed(ComposedMachine {
- foo: Foo {
- thing: Thing,
- state: Closed,
- },
- bar: Bar {
- thing: Thing,
- state: Closed,
- },
- })
- }
- }
- fn main() {}
Add Comment
Please, Sign In to add comment