Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. trait A<'g> { }
  2.  
  3. trait B<'g> { }
  4.  
  5. trait C<T, U>
  6. where
  7. T: for<'g> A<'g> + ?Sized,
  8. U: for<'g> B<'g> + ?Sized,
  9. {
  10. fn get_a_or_b(&self) -> AorB<T, U>;
  11. fn get_c(&self) -> &U;
  12. }
  13.  
  14. enum AorB<'g, T, U>
  15. where
  16. T: A<'g> + ?Sized,
  17. U: B<'g> + ?Sized,
  18. {
  19. A(&'g T),
  20. B(&'g U),
  21. }
  22.  
  23. struct MyStruct {
  24. a: String,
  25. b: String,
  26. c: String
  27. }
  28.  
  29. impl<'g> A<'g> for str {}
  30.  
  31. impl<'g> B<'g> for str {}
  32.  
  33. impl C<str, str> for MyStruct {
  34. fn get_a_or_b(&self) -> AorB<str, str> {
  35. AorB::A(&self.a)
  36. }
  37.  
  38. fn get_c(&self) -> &str {
  39. &self.c
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement