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

Creating a NotNull struct


By disabling default construction, we can force initialization of a type. Using this feature, we'll make an object reference that will force the user to check for null before using it.

How to do it…

To create a NotNull struct, perform the following steps:

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

  2. Disable default construction with @disable this();.

  3. Write a private constructor that takes T and assert(t !is null);.

  4. Write a property function that returns the payload and use it with alias this.

  5. Write a helper struct CheckNull(T), with a member T. The member T is a property that returns NotNull!T and has opCast(T : bool), which checks the payload for null and returns true if it is not null.

  6. Write a helper function, checkNull, which takes a T member and returns CheckNull!T.

  7. Write your functions to accept and return NotNull!T whenever possible.

  8. Optionally, write a generic factory function that returns NotNull!T.

  9. Use the function with if(auto nn = test.checkNull) {...