bab_rs 0.6.0

An implementation of the Bab family of hash functions, and its WILLIAM3 instantiation.
Documentation
//! String storage, with efficient hash computation and [optimised](https://worm-blossom.github.io/bab/#optimizations) [verifiable streaming](https://worm-blossom.github.io/bab/#streaming_verification).
//!
//! This module provides the most complete (and thus complex) APIs for Bab. Instead of simply hashing strings, the functionality in this module *stores* strings, together with the [Merkle tree used in Bab](https://worm-blossom.github.io/bab/#tree). Such storage can be updated via [verifiablabe slice streams](https://worm-blossom.github.io/bab/#slice_verification), and it can emit verifiable slice streams for subslices of the stored strings.
//!
//! Before you can use this API, you need to make a couple of choices. The first choice is selecting a *storage backend*. All functionality in this module is generic over different kinds of backing storage. We provide an [in-memory backend](backend_memory) (not persistent) and a [file-system backend](backend_filesystem) (persistent) out of the box; you can write your own backends by implementing the [`StorageBackend`] trait. Notably, this trait is not aware of any Bab-specific functionality, it merely provides access to a flat array of bytes.
//!
//! On top of the backend, you then select a suitable *Bab store*. The store introduces Bab-specific functionality, such as ingesting or emitting [verifiable streams](https://worm-blossom.github.io/bab/#streaming_verification). As of now, we provide only one kind of store: the [`SingleSliceStore`], which stores exactly one contiguous subslice of a string. In the future, we will also implement a store for storing multiple disjoint subslices of the same string.
//!
//! The types for describing slices and optimisation parameters for verifiable streaming are provided in the [`verifiable_streaming`] module.

pub mod storage_backend;
pub use storage_backend::StorageBackend;

pub mod backend_filesystem;

pub mod backend_memory;

pub mod single_slice_store;
pub use single_slice_store::SingleSliceStore;

pub mod verifiable_streaming;

pub mod units;