RCArray is unsafe
Walter Bright via Digitalmars-d
digitalmars-d at puremagic.com
Mon Mar 2 14:50:15 PST 2015
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.
More information about the Digitalmars-d
mailing list