D safety! New Feature?

qznc via Digitalmars-d digitalmars-d at puremagic.com
Wed Aug 3 01:09:41 PDT 2016


On Tuesday, 2 August 2016 at 21:48:58 UTC, Mark Twain wrote:
> global ImmutableArray!int Data;
>
>
> MutableArray!int DataCopy = Data.Copy; // Creates a mutable 
> copy of Data.
> ... Do work with DataCopy ...
> Data.Replace(DataCopy); // Makes a copy of DataCopy.

I see the problem that you cannot compose this. Expand the 
example to two global arrays:

global ImmutableArray!int Data1;
global ImmutableArray!int Data2;

MutableArray!int DataCopy1 = Data1.Copy;
MutableArray!int DataCopy2 = Data2.Copy;
  ... Do work with DataCopy1 and DataCopy2 ...
Data1.Replace(DataCopy1);
// in between state is inconsistent => unsafe
Data2.Replace(DataCopy2);


More information about the Digitalmars-d mailing list