1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Copyright (c) DUSK NETWORK. All rights reserved.

//! Microkelvin
//!
//! A library for dealing with tree-shaped data. It has three parts:
//!
//! `Compound`, a trait for a generic way to implement tree structures
//! `Annotation`, a trait for annotated subtrees used for searching
//! `Branch` and `BranchMut`, types for representing branches in tree-formed
//! data as well as methods of search.
#![cfg_attr(not(feature = "host"), no_std)]
#![deny(missing_docs)]

#[macro_use]
extern crate alloc;

mod annotations;
mod branch;
mod branch_mut;
mod compound;
mod link;
mod walk;
mod wrappers;

pub use annotations::{
    ARef, Annotation, Cardinality, Combine, FindMaxKey, Keyed, MaxKey, Member,
    Nth,
};
pub use branch::{Branch, BranchRef, MappedBranch};
pub use branch_mut::{BranchMut, BranchRefMut, MappedBranchMut};
pub use compound::{
    ArchivedChild, ArchivedCompound, Child, ChildMut, Compound, MutableLeaves,
};
pub use link::{ArchivedLink, Link};
pub use walk::{All, Discriminant, Step, Walkable, Walker};
pub use wrappers::{MaybeArchived, MaybeStored, Primitive};

mod storage;
pub use storage::{
    Ident, OffsetLen, Store, StoreProvider, StoreRef, StoreSerializer, Stored,
    Token, TokenBuffer,
};

#[cfg(feature = "host")]
pub use storage::{HostStore, UnwrapInfallible};