Guest User

Untitled

a guest
Jun 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.47 KB | None | 0 0
  1. use std::marker::PhantomData;
  2.  
  3. struct Inner<'a> {
  4. _phantom: PhantomData<&'a ()>,
  5. }
  6. impl<'a> Inner<'a> {
  7. fn do_a_thing(&mut self) {}
  8. }
  9.  
  10. struct Outer<'a> {
  11. x: &'a mut Inner<'a>,
  12. }
  13. impl<'a> Outer<'a> {
  14. fn act_on_inner(&mut self) {
  15. self.x.do_a_thing();
  16. }
  17. }
  18.  
  19. fn f<'a>(x: &'a mut Inner<'a>) {
  20. let mut outer = Outer { x: x };
  21. outer.act_on_inner();
  22. }
  23.  
  24. fn main() {
  25. let mut x = Inner {
  26. _phantom: PhantomData,
  27. };
  28. f(&mut x);
  29. f(&mut x);
  30. }
Add Comment
Please, Sign In to add comment