Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. #![allow(unused_variables)]
  2. use std::ops::Add;
  3.  
  4. #[derive(Debug)]
  5. struct A(i32);
  6.  
  7. #[derive(Debug)]
  8. enum E{ONE,TWO,THREE}
  9.  
  10. impl Add for A {
  11. type Output = A;
  12.  
  13. fn add(self, rhs: A) -> A {
  14. A(self.0 + rhs.0)
  15. }
  16. }
  17.  
  18. fn from_value<T: core::fmt::Debug>(t: T){
  19. dbg!(t);
  20. }
  21.  
  22. fn from_ref<T: core::fmt::Debug>(t: &T){
  23. dbg!(t);
  24. }
  25.  
  26. fn from_mut<T: core::fmt::Debug + std::ops::Add::<Output=T>>(t: &mut T){
  27. dbg!(t);
  28. t = &mut *t + *t;
  29. }
  30.  
  31. fn main() {
  32. let mut a = A(1);
  33. let mut b = E::ONE;
  34. from_ref(&a);
  35. from_mut(&mut a);
  36. let mut c = 1 + a.0;
  37. from_value(a);
  38.  
  39. //from_ref(&b);
  40. //from_mut(&mut b);
  41. //from_value(b);
  42.  
  43. from_ref(&c);
  44. from_mut(&mut c);
  45. from_value(c);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement