Using unique pointers
Unique pointers are a restrained type that are used when clear ownership of a resource needs to be established. Here, we'll create a UniqueArray(T)
object, which enforces that only one reference to its payload can exist at any time.
How to do it…
In order to use unique pointers, perform the following steps:
Create a struct
UniqueArray(T)
with a member of typeT
.Disable the postblit by using
@disable this(this);
.Write a private constructor that takes
T
.Write a
release
method that nullifies the current object and returnsUniqueArray
with the payload.Write a destructor to perform cleanup, if necessary.
Offer a method to create a new unique resource.
Implement other methods to use the object. Do not use
alias this
or any other method that may escape your reference.To use the method any time, you need to pass the reference somewhere. This can be done by calling
release
, as shown in the following code snippet:import core.stdc.stdlib; struct UniqueArray(T) { private T[] payload...