Morton index storage which can store an arbitrary number of levels without an upper limit. This uses a
Vec<u8> as the internal storage, which can grow dynamically, at the expense of not being Copy and
potentially worse performance than the StaticStorage2D and FixedStorage2D variants.
Morton index storage which can store an arbitrary number of levels without an upper limit. This uses a
Vec<u8> as the internal storage, which can grow dynamically, at the expense of not being Copy and
potentially worse performance than the StaticStorage3D and FixedStorage3D variants.
A 2D Morton index. This represents a single node inside a quadtree. The depth of the node and the maximum storage
capacity of this type depend on the generic Storage type
A 3D Morton index. This represents a single node inside an octree. The depth of the node and the maximum storage
capacity of this type depend on the generic Storage type
Morton index storage which can store an arbitrary number of levels up to a static maximum number of levels
as defined by the FixedStorageTypeB. As opposed to the FixedDepthStorage, two Morton indices with this
storage type can represent two nodes with different depth levels. Since the internal bit representation is
fixed at compile-time by the FixedStorageType parameter, the maximum depth is limited at compile-time as
well, so some of the methods that construct or extend Morton indices with this storage might return None if
the internal storage capacity is not sufficient.
Trait for any type that can be used as the data type in a fixed-depth storage of a Morton index. The idea here is to generalize
unsigned integer types with an arbitrary number of bits, so that we can use u8, u16, u32 etc. as the internal data type
of the FixedDepthStorageND types. Ultimately, this should also allow us to use [u8; X] types to have statically-sized Morton
indices with arbitrary depth, beyond the native integer types of the current plattform, but this is a TODO.
Trait for any type of Morton index, independent of the maximum levels or dimensionality. This contains a core set of common
functions that are identical to all Morton indices:
Trait for the different storage types of a Morton index. A Storage is responsible for storing the different cells at
each level of the Morton index. While it would be possible to simply have a Vec<Cell>, it is usually more efficient
to do some bit-packing. Implementors of this trait can store the cells in any way they choose, Storage just defines
the common API that each Morton index must support. The actual storage depends on the Dimension of the Morton index,
so Storage requires a generic parameter that implements Dimension.
Helper trait that simplifies the implementation of the Storage trait. This encapsulates how a storage implementation
maps its internal bit representation to the cells at a specific levels