1#![cfg_attr(feature = "from_slice", feature(portable_simd))]
2#![doc = include_str!("../README.md")]
3#![no_std]
4extern crate alloc;
5#[cfg(feature = "std")]
6extern crate std;
7
8pub mod prelude;
23
24mod dyn_sorted_disjoint;
26
27pub use dyn_sorted_disjoint::DynSortedDisjoint;
28
29mod dyn_sorted_disjoint_map;
30pub use dyn_sorted_disjoint_map::DynSortedDisjointMap;
31
32mod integer;
33pub use crate::integer::Integer;
34
35mod intersection_iter_map;
36pub use intersection_iter_map::IntersectionIterMap;
37
38mod iter_map;
39pub use crate::iter_map::{IntoIterMap, IterMap};
40
41mod keys;
42pub use crate::keys::{IntoKeys, Keys};
43
44mod map;
45pub use crate::map::{RangeMapBlaze, ValueRef};
46
47mod map_op;
48
49mod merge;
50pub use merge::{KMerge, Merge};
51
52mod merge_map;
53pub use merge_map::{KMergeMap, MergeMap};
54
55mod multiway;
56pub use multiway::{MultiwayRangeSetBlaze, MultiwayRangeSetBlazeRef, MultiwaySortedDisjoint};
57
58mod multiway_map;
59pub use multiway_map::{
60 MultiwayRangeMapBlaze, MultiwayRangeMapBlazeRef, MultiwaySortedDisjointMap,
61};
62
63mod not_iter;
64pub use not_iter::NotIter;
65
66mod range_values;
67pub use crate::range_values::{
68 IntoRangeValuesIter, MapIntoRangesIter, MapRangesIter, RangeValuesIter, RangeValuesToRangesIter,
69};
70
71mod ranges_iter;
72pub use crate::ranges_iter::{IntoRangesIter, RangesIter};
73
74mod set;
75#[cfg(all(not(coverage), feature = "std"))]
76pub use crate::set::demo_read_ranges_from_file;
77pub use crate::set::{IntoIter, Iter, RangeSetBlaze};
78
79mod sorted_disjoint;
80pub use sorted_disjoint::{CheckSortedDisjoint, RangeOnce, SortedDisjoint, SortedStarts};
81
82mod sorted_disjoint_map;
83pub use sorted_disjoint_map::{
84 CheckSortedDisjointMap, IntoString, SortedDisjointMap, SortedStartsMap,
85};
86
87mod sym_diff_iter;
88pub use sym_diff_iter::SymDiffIter;
89
90mod sym_diff_iter_map;
91pub use sym_diff_iter_map::SymDiffIterMap;
92
93mod union_iter;
94pub use union_iter::UnionIter;
95
96mod union_iter_map;
97pub use union_iter_map::UnionIterMap;
98
99mod unsorted_disjoint;
100pub use crate::unsorted_disjoint::AssumeSortedStarts;
101
102mod unsorted_priority_map;
103pub use crate::unsorted_priority_map::AssumePrioritySortedStartsMap;
104
105mod values;
106pub use crate::values::{IntoValues, Values};
107
108mod uint_plus_one;
109pub use uint_plus_one::UIntPlusOne;
110
111#[cfg(feature = "rog_experimental")]
112mod rog;
113#[cfg(feature = "rog_experimental")]
114#[allow(deprecated)]
115pub use rog::{Rog, RogsIter};
116#[cfg(any(test, feature = "test_util"))]
117#[doc(hidden)]
118pub mod test_util;
119
120pub(crate) mod from_slice;
122pub(crate) mod map_from_iter;
123pub(crate) mod tests_map;
124pub(crate) mod tests_set;
125
126type NandMerge<T, L, R> = UnionMerge<T, NotIter<T, L>, NotIter<T, R>>;
128type NandKMerge<T, I> = UnionKMerge<T, NotIter<T, I>>;
129type DifferenceMapInternal<T, VR, L, R> = IntersectionIterMap<T, VR, L, NotIter<T, R>>;
130type IntersectionMapInternal<T, I> = NotIter<T, NandKMerge<T, I>>;
131
132#[doc(hidden)]
134pub type DifferenceMap<T, VR, L, R> =
135 DifferenceMapInternal<T, VR, L, RangeValuesToRangesIter<T, VR, R>>;
136#[doc(hidden)]
137pub type DifferenceMerge<T, L, R> = NotIter<T, UnionMerge<T, NotIter<T, L>, R>>;
138
139#[doc(hidden)]
140pub type IntersectionKMap<'a, T, VR, I> =
141 IntersectionIterMap<T, VR, I, IntersectionMapInternal<T, RangeValuesToRangesIter<T, VR, I>>>;
142#[doc(hidden)]
143pub type IntersectionMap<T, VR, L, R> =
144 IntersectionIterMap<T, VR, R, RangeValuesToRangesIter<T, VR, L>>;
145#[doc(hidden)]
146pub type IntersectionMerge<T, L, R> = NotIter<T, NandMerge<T, L, R>>;
147
148#[doc(hidden)]
149pub type NotMap<T, VR, I> = NotIter<T, RangeValuesToRangesIter<T, VR, I>>;
150
151#[doc(hidden)]
152pub type SymDiffKMerge<T, II> = SymDiffIter<T, KMerge<T, II>>;
153#[doc(hidden)]
154pub type SymDiffKMergeMap<T, VR, II> = SymDiffIterMap<T, VR, KMergeMap<T, VR, II>>;
155#[doc(hidden)]
156pub type SymDiffMerge<T, L, R> = SymDiffIter<T, Merge<T, L, R>>;
157#[doc(hidden)]
158pub type SymDiffMergeMap<T, VR, L, R> = SymDiffIterMap<T, VR, MergeMap<T, VR, L, R>>;
159
160#[doc(hidden)]
161pub type UnionKMerge<T, I> = UnionIter<T, KMerge<T, I>>;
162#[doc(hidden)]
163pub type UnionKMergeMap<T, VR, I> = UnionIterMap<T, VR, KMergeMap<T, VR, I>>;
164#[doc(hidden)]
165pub type UnionMerge<T, L, R> = UnionIter<T, merge::Merge<T, L, R>>;
166#[doc(hidden)]
167pub type UnionMergeMap<T, VR, L, R> = UnionIterMap<T, VR, MergeMap<T, VR, L, R>>;