triple_arena/
lib.rs

1//! Note: there are "std" and "serde_support" feature flags
2
3#![no_std]
4// false positives
5#![allow(clippy::while_let_on_iterator)]
6#![allow(clippy::comparison_chain)]
7
8mod arena;
9pub use arena::arena_iterators;
10mod chain;
11mod ord;
12mod traits;
13pub use chain::{chain_iterators, ChainArena, Link};
14// always keep this for the serde documentation
15#[cfg(feature = "serde_support")]
16pub use traits::serde;
17pub use traits::{Advancer, ArenaTrait, Ptr};
18mod surject;
19// reexport for the macros to use
20pub use arena::Arena;
21pub use ord::{ord_iterators, OrdArena};
22pub use recasting::{Recast, Recaster};
23pub use surject::{surject_iterators, SurjectArena};
24/// Special utilities for advanced usage
25pub mod utils {
26    #[cfg(feature = "expose_internal_utils")]
27    pub use crate::arena::InternalEntry;
28    #[cfg(feature = "expose_internal_utils")]
29    pub use crate::arena::NonZeroInxVec;
30    #[cfg(not(feature = "expose_internal_utils"))]
31    pub(crate) use crate::arena::NonZeroInxVec;
32    // only intended for size_of tests and such
33    #[cfg(feature = "expose_internal_utils")]
34    pub use crate::ord::Node;
35    pub(crate) use crate::{arena::nzusize_unchecked, traits::ptrinx_unchecked};
36    pub use crate::{
37        chain::{chain_no_gen_iterators, ChainNoGenArena, LinkNoGen},
38        traits::{PtrGen, PtrInx, PtrNoGen},
39    };
40    /// A reexport used by the macros
41    #[cfg(feature = "serde_support")]
42    pub mod serde {
43        pub use serde::{Deserialize, Deserializer, Serialize, Serializer};
44    }
45}
46
47extern crate alloc;