Guest User

Untitled

a guest
Jan 16th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. struct PA;
  2. struct PB;
  3. struct PC;
  4.  
  5. struct Parts<A, B, C> {
  6. pub a: A,
  7. pub b: B,
  8. pub c: C,
  9. }
  10.  
  11. fn create() -> Parts<PA, PB, PC> {
  12. Parts {
  13. a: PA,
  14. b: PB,
  15. c: PC,
  16. }
  17. }
  18.  
  19. struct Led {
  20. p: PB,
  21. }
  22.  
  23. impl Led {
  24. pub fn new<A, C>(parts: Parts<A, PB, C>) -> (Self, Parts<A, (), C>) {
  25. (
  26. Led {
  27. p: parts.b,
  28. },
  29. Parts {
  30. a: parts.a,
  31. b: (),
  32. c: parts.c,
  33. }
  34. )
  35. }
  36. }
  37.  
  38. fn main() {
  39. let parts = create();
  40.  
  41. let (led, parts) = Led::new(parts);
  42.  
  43. // Second one fails
  44. let (led, parts) = Led::new(parts);
  45. }
Add Comment
Please, Sign In to add comment