bors 883e74645d Auto merge of #48770 - bobtwinkles:two_phase_borrows_rewrite, r=pnkfelix
Two phase borrows rewrite

This definitely needs a careful review. Both @pnkfelix and @nikomatsakis  were involved with the design of this so they're natural choices here. I'm r?'ing @pnkfelix since they wrote the original two-phase borrow implementation. Also ping @KiChjang who expressed interest in working on this. I'm going to leave a few comments below pointing out some of the more dangerous changes I made (i.e. what I would like reviewers to pay special attention too.)

r? @pnkfelix
2018-03-12 12:58:09 +00:00
..
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:35:39 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-03-06 18:03:05 -03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-28 10:56:07 -08:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-03-01 12:54:16 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:35:38 +01:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-27 10:46:23 -08:00
2018-02-28 10:56:07 -08:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:34:10 +01:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-03-08 08:35:38 +01:00
2018-03-08 08:35:38 +01:00
2018-03-08 08:35:38 +01:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-03-08 08:35:38 +01:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-03-05 02:47:08 -05:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-28 12:59:30 -03:00
2018-02-26 20:24:42 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 21:20:31 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:42 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00
2018-02-26 20:24:02 +03:00