Crate indexing [] [src]

Sound unchecked indexing in Rust using “generativity”; a type system approach to indices and ranges that are trusted to be in bounds.

Includes an index API and an interval (Range<'id, P>) API developing its own “algebra” for transformations of in bounds ranges.

This is an experiment. The API is all of inconsistent, incomplete and redundant, but it explores interesting concepts.

Modules

algorithms

Respository of some indexing-implemented algorithms so we can dissect them and their codegen.

Structs

Container

A branded container, that allows access only to indices and ranges with the exact same brand in the 'id parameter.

Index

A branded index.

IndexingError

Error produced when an indexing operation is out of bounds or otherwise inapplicable.

Range

A branded range.

RangeIter

An iterator over the indices in a range.

Subdivide

Subdivide is an iterator of evenly sized nonempty, nonoverlapping ranges

Enums

NonEmpty

Length marker for range known to not be empty.

Unknown

Length marker for unknown length.

Traits

Buffer

A marker trait for collections where we can safely vet indices

BufferMut
IntoCheckedRange
ProofAdd

Represents the combination of two proofs P and Q by a new type Sum.

Functions

indices

Create an indexing scope for a container.