Guest User

Untitled

a guest
Dec 14th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. trait T {
  2. fn f(&self);
  3. }
  4.  
  5. #[allow(dead_code)]
  6. struct A {
  7. i: i32
  8. }
  9.  
  10. impl T for A {
  11. fn f(&self) {}
  12. }
  13.  
  14. fn f<T : ?Sized>(_: &T) {}
  15. //fn g<T : ?Sized>(_: T) {} Error
  16.  
  17. trait T2 {
  18. fn foo(&self) -> Box<T2>;
  19. fn bar() -> Box<T2> where Self : Sized;
  20. }
  21.  
  22. impl T2 for A {
  23. fn foo(&self) -> Box<T2> {
  24. println!("foo");
  25. Box::new(A{ i: 5 })
  26. }
  27.  
  28. fn bar() -> Box<T2> {
  29. println!("bar");
  30. Box::new(A{ i: 5 })
  31. }
  32. }
  33.  
  34. trait T3 {} // : Sized {}
  35.  
  36. impl T3 for A {}
  37.  
  38. fn main() {
  39. let a = A{ i: 5 };
  40. let _t : &T = &a;
  41. f::<T>(&a);
  42.  
  43. let _b : Box<T2> = T2::foo(&a);
  44. let _c : Box<T2> = <A as T2>::bar();
  45.  
  46. let _d : &T3 = &A{i: 5};
  47. }
Add Comment
Please, Sign In to add comment