Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #![allow(unused)]
  2. use std::convert::From;
  3.  
  4. #[derive(Debug)]
  5. struct LeafOne {
  6. arg0: usize,
  7. }
  8.  
  9. #[derive(Debug)]
  10. struct LeafTwo {
  11. arg0: usize,
  12. arg1: usize,
  13. }
  14.  
  15. #[derive(Debug)]
  16. struct LeafThree {
  17. arg0: usize,
  18. arg1: usize,
  19. arg2: usize,
  20. }
  21.  
  22. #[derive(Debug)]
  23. struct LeafFour {
  24. arg0: String,
  25. }
  26.  
  27. #[derive(Debug)]
  28. struct LeafFive {
  29. arg0: bool,
  30. }
  31.  
  32. #[derive(Debug)]
  33. enum InnerChoice {
  34. One(LeafOne),
  35. Two(LeafTwo),
  36. Three(LeafThree),
  37. }
  38.  
  39. #[derive(Debug)]
  40. enum MiddleChoice {
  41. Inner(InnerChoice),
  42. Four(LeafFour),
  43. }
  44.  
  45. #[derive(Debug)]
  46. enum OuterChoice {
  47. Middle(MiddleChoice),
  48. Five(LeafFive),
  49. }
  50.  
  51. impl From<LeafOne> for InnerChoice {
  52. fn from(leaf: LeafOne) -> Self {
  53. InnerChoice::One(leaf)
  54. }
  55. }
  56.  
  57. impl From<LeafTwo> for InnerChoice {
  58. fn from(leaf: LeafTwo) -> Self {
  59. InnerChoice::Two(leaf)
  60. }
  61. }
  62.  
  63. impl From<LeafThree> for InnerChoice {
  64. fn from(leaf: LeafThree) -> Self {
  65. InnerChoice::Three(leaf)
  66. }
  67. }
  68.  
  69. impl From<InnerChoice> for MiddleChoice {
  70. fn from(inner: InnerChoice) -> Self {
  71. MiddleChoice::Inner(inner)
  72. }
  73. }
  74.  
  75. impl From<LeafFour> for MiddleChoice {
  76. fn from(four: LeafFour) -> Self {
  77. MiddleChoice::Four(four)
  78. }
  79. }
  80.  
  81. impl From<MiddleChoice> for OuterChoice {
  82. fn from(mid: MiddleChoice) -> Self {
  83. OuterChoice::Middle(mid)
  84. }
  85. }
  86.  
  87. impl From<LeafFive> for OuterChoice {
  88. fn from(five: LeafFive) -> Self {
  89. OuterChoice::Five(five)
  90. }
  91. }
  92.  
  93. fn main() {
  94. let leaf_one = LeafOne { arg0: 42 };
  95.  
  96. println!("{:#?}\n", leaf_one);
  97.  
  98. let out = OuterChoice::from(MiddleChoice::from(InnerChoice::from(LeafTwo {
  99. arg0: 13,
  100. arg1: 2,
  101. })));
  102.  
  103. println!("{:#?}\n", out);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement