Guest User

Untitled

a guest
Apr 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. // Big struct
  2. struct Thing;
  3.  
  4. // Zero-sized states
  5. struct Open;
  6. struct Closed;
  7.  
  8. // State machine A
  9. struct Foo<S> {
  10. thing: Thing,
  11. state: S,
  12. }
  13.  
  14. // State machine B
  15. struct Bar<S> {
  16. thing: Thing,
  17. state: S,
  18. }
  19.  
  20. // Actuall Object I want to use
  21. struct ComposedMachine<X, Y> {
  22. foo: Foo<X>,
  23. bar: Bar<Y>,
  24. }
  25.  
  26. enum States {
  27. Open(ComposedMachine<Open, Open>),
  28. Closed(ComposedMachine<Closed, Closed>),
  29. OpenClosed(ComposedMachine<Open, Closed>),
  30. ClosedOpen(ComposedMachine<Closed, Open>),
  31. }
  32.  
  33. fn determine_state() -> States {
  34. if true {
  35. States::Open(ComposedMachine {
  36. foo: Foo {
  37. thing: Thing,
  38. state: Open,
  39. },
  40. bar: Bar {
  41. thing: Thing,
  42. state: Open,
  43. },
  44. })
  45. } else {
  46. States::Closed(ComposedMachine {
  47. foo: Foo {
  48. thing: Thing,
  49. state: Closed,
  50. },
  51. bar: Bar {
  52. thing: Thing,
  53. state: Closed,
  54. },
  55. })
  56. }
  57. }
  58.  
  59. fn main() {}
Add Comment
Please, Sign In to add comment