Book Image

D Cookbook

By : Adam Ruppe
Book Image

D Cookbook

By: Adam Ruppe

Overview of this book

Table of Contents (21 chapters)
D Cookbook
Credits
Foreword
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

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:

  1. Create a struct UniqueArray(T) with a member of type T.

  2. Disable the postblit by using @disable this(this);.

  3. Write a private constructor that takes T.

  4. Write a release method that nullifies the current object and returns UniqueArray with the payload.

  5. Write a destructor to perform cleanup, if necessary.

  6. Offer a method to create a new unique resource.

  7. Implement other methods to use the object. Do not use alias this or any other method that may escape your reference.

  8. 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...