On Monday, 2 March 2015 at 22:51:03 UTC, Walter Bright wrote:
On 3/2/2015 1:12 PM, deadalnix wrote:
I do think you are confusing how Rust does it. In Rust,
borrowing makes the
source and borrowed reference immutable by default. So by
default the problem do
not occurs.
May I refer you to:
http://static.rust-lang.org/doc/0.6/tutorial-borrowed-ptr.html#borrowing-managed-boxes-and-rooting
"Again the lifetime of y is L, the remainder of the function
body. But there is a crucial difference: suppose x were to be
reassigned during the lifetime L? If the compiler isn't
careful, the managed box could become unrooted, and would
therefore be subject to garbage collection. A heap box that is
unrooted is one such that no pointer values in the heap point
to it. It would violate memory safety for the box that was
originally assigned to x to be garbage-collected, since a
non-heap pointer---y---still points into it.
[...]
For this reason, whenever an & expression borrows the interior
of a managed box stored in a mutable location, the compiler
inserts a temporary that ensures that the managed box remains
live for the entire lifetime. [...] This process is called
rooting."
It's possible that this is an old and obsolete document, but
it's what I found.
That's actually very old(0.6 - nearly 2 years ago.) I believe
rooting was dropped from the language completely.
http://doc.rust-lang.org/book/ownership.html
also, rust by example chapter 17-19 cover this
http://rustbyexample.com/move.html