by
In a world 🌏 driven by Entropy Harnesses sometimes your collections 📁 can feel cold ❄️ and heartless 💙⃠.
If you share this feeling, you may want to let EmptyCollection
into your heart and collections.
EmptyCollection
provides trivial conformance to Collection
(a matter which has been considered previously on these pages).
This is achieved by using an integer index type, a trivial generator struct dubbed EmptyGenerator
, defining startIndex
== endIndex
, returning a count of 0 and disallowing subscripting.
This seems rather straightforward, so where is this put to use? The file header provides a brief motivating example:
Sometimes an operation is best expressed in terms of some other, larger operation where one of the parameters is an empty collection.
For example RangeReplaceable
uses EmptyCollection
s to write a number of removal operations in terms of replaceRange
, as does Array
, while Sequence
uses an EmptyCollection
if a prefix of length 0 is requested.
So, the next time you need a truly empty collection, consider choosing EmptyCollection
for your API.