On Wednesday, 16 September 2015 at 17:03:14 UTC, Marc Schütz
wrote:
On Tuesday, 15 September 2015 at 21:44:25 UTC, Freddy wrote:
On Tuesday, 15 September 2015 at 17:45:45 UTC, Freddy wrote:
Rust style memory management in a library
Wait nevermind about that part, it's harder than I thought.
Yeah, I thought about type-states as a way of implementing
borrowing, too. I think the biggest difficulty is that the
state of one object (the owner) can be affected by what happens
in other objects (i.e., it becomes mutable again when those are
destroyed).
If the borrowed reference itself follows move semantics, can't
you just require it to be swallowed by it's origin as the "close"
operation?
pseudocode:
File<Open> f = open();
(File<OpenLending> f, FileRef<Ready> r) = f.borrow();
dostuff(r);
(File<Open> f, FileRef<Void> r) = f.unborrow(r);
File<Closed> f = f.close()