Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. use std::ops::*;
  2. use std::fmt::Debug;
  3.  
  4.  
  5. #[derive(Eq, PartialEq, Debug, Copy, Clone)]
  6. struct Point {
  7. x: u32,
  8. y: u32,
  9. }
  10.  
  11. impl Add for Point {
  12. type Output = Point;
  13.  
  14. fn add(self, other: Point) -> Self {
  15. Point {
  16. x: self.x + other.x,
  17. y: self.y + other.y,
  18. }
  19. }
  20. }
  21.  
  22. fn addable<A: Add + Debug>(a: A, b: A) -> A::Output {
  23. println!("{:?} + {:?} = {:?}", a, b, a + b);
  24. a + b
  25. }
  26.  
  27.  
  28. fn main() {
  29. let p1: Point = Point { x: 1, y: 1 };
  30. let p2: Point = Point { x: 2, y: 2 };
  31.  
  32. assert!((p1 + p2) == Point { x: 3, y: 3 });
  33.  
  34. assert!(addable(p1, p2) == Point { x: 3, y: 3 });
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement