RCArray is unsafe
weaselcat via Digitalmars-d
digitalmars-d at puremagic.com
Mon Mar 2 14:42:43 PST 2015
On Monday, 2 March 2015 at 21:12:20 UTC, deadalnix wrote:
> On Monday, 2 March 2015 at 20:54:20 UTC, Walter Bright wrote:
>> I looked at how Rust does it. I was hoping it was something
>> clever, but it isn't. A copy is made of the object to which a
>> borrowed reference is taken - in other words, the reference
>> count is incremented.
>>
>> For D structs, that means, if there's a postblit, a copy must
>> be made. For D ref counted classes, a ref count increment must
>> be done.
>>
>> I was hoping to avoid that, but apparently there's no way.
>>
>> There are cases where this can be avoided, like calling pure
>> functions. Another win for pure functions!
>
> 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.
>
> You can also borrow a mutable reference, in which case the
> source is disabled for the duration of the borrowing. That
> makes it impossible to borrow a mutable reference twice.
>
> The above mentioned scenario cannot happen at all in Rust, by
> design. As a result, there is solution for the problem, as the
> problem cannot occur in the first place.
I don't think you were advocating for this but,
+1 for a borrow system similar to Rust.
More information about the Digitalmars-d
mailing list