Guest User

Untitled

a guest
Sep 22nd, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. struct Handler<'a> {
  2. neovim: &'a mut Neovim
  3. }
  4.  
  5. struct Session {
  6. handler: Option<Handler>
  7. }
  8.  
  9. struct Neovim {
  10. session: Session
  11. }
  12.  
  13.  
  14. fn main() {
  15. let session = Session {handler: None};
  16. let neovim = Neovim {session: session};
  17. let handler = Handler {neovim: &mut neovim};
  18.  
  19. // So far so good..
  20.  
  21.  
  22. // uh oh borrow while a mutable borrow on line 17 is out..
  23. neovim.session.start_event_loop(handler);
  24.  
  25. // Maybe we could try this..
  26.  
  27. /*
  28. struct Handler {
  29. neovim: RefCell<Neovim>
  30. }
  31.  
  32. ...
  33.  
  34. // Does not work
  35. let neovim = RefCell::New(Neovim {session: session});
  36. let handler = Handler {neovim}
  37. neovim.session.start_event_loop(handler);
  38.  
  39. // Also Does not work
  40. let neovim = RefCell::New(Neovim {session: session});
  41. let handler = Handler {neovim.borrow()}
  42. neovim.session.start_event_loop(handler);
  43.  
  44. // Also Does not work
  45. let neovim = RefCell::New(Neovim {session: session});
  46. let handler = Handler {neovim.borrow_mut()}
  47. neovim.session.start_event_loop(handler);
  48.  
  49. // Also Does not work
  50. let neovim = Arc::new(Mutex::new(RefCell::New(Neovim {session: session})));
  51. let handler = Handler {neovim}
  52. neovim.session.start_event_loop(handler);
  53. */
  54. }
Add Comment
Please, Sign In to add comment