#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(docsrs, doc(auto_cfg))]
#[cfg(doctest)]
#[doc = include_str!("../README.md")]
struct ReadmeDoctests;
mod build;
mod builder2d;
mod builder3d;
mod config;
mod geometry;
mod hilbert2d;
mod index2d;
#[cfg(feature = "f32-storage")]
mod index2d_f32;
#[cfg(feature = "simd")]
mod index2d_soa;
mod index3d;
#[cfg(feature = "f32-storage")]
mod index3d_f32;
#[cfg(feature = "simd")]
mod index3d_soa;
mod join;
mod neighbors;
mod persistence;
mod ray;
mod sort2d;
mod sort3d;
#[cfg(feature = "stream")]
mod stream;
mod traversal;
mod tree;
mod triangle;
pub use build::BuildError;
pub use builder2d::Index2DBuilder;
pub use builder3d::Index3DBuilder;
pub use config::DEFAULT_NODE_SIZE;
#[cfg(feature = "parallel")]
pub use config::DEFAULT_PARALLEL_MIN_ITEMS;
pub use geometry::{BoundsError, Box2D, Box3D, Point2D, Point3D};
pub use index2d::{Index2D, Index2DView, Search2DIter, Serializer2D};
#[cfg(feature = "f32-storage")]
pub use index2d_f32::{Index2DF32, Serializer2DF32};
#[cfg(all(feature = "f32-storage", feature = "simd"))]
pub use index2d_f32::{SimdIndex2DF32, SimdIndex2DF32View};
#[cfg(feature = "simd")]
pub use index2d_soa::{SimdIndex2D, SimdIndex2DView};
pub use index3d::{Index3D, Index3DView, Search3DIter, Serializer3D};
#[cfg(feature = "f32-storage")]
pub use index3d_f32::{Index3DF32, Serializer3DF32};
#[cfg(all(feature = "f32-storage", feature = "simd"))]
pub use index3d_f32::{SimdIndex3DF32, SimdIndex3DF32View};
#[cfg(feature = "simd")]
pub use index3d_soa::{SimdIndex3D, SimdIndex3DView};
pub use neighbors::NeighborWorkspace;
pub use persistence::{FileMetadata, LoadError, PayloadError, read_metadata};
pub use ray::{Ray2D, Ray3D};
pub use sort2d::SortKey2D;
pub use sort3d::SortKey3D;
#[cfg(feature = "async")]
pub use stream::AsyncRangeReader;
#[cfg(all(feature = "stream", any(unix, windows)))]
pub use stream::FileReader;
#[cfg(feature = "stream")]
pub use stream::{
RangeReader, SliceReader, StreamDirectory, StreamError, StreamIndex2D, StreamIndex2DF32,
StreamIndex3D, StreamIndex3DF32, StreamLimits,
};
pub use traversal::SearchWorkspace;
pub use triangle::{
Triangle2, Triangle2D, Triangle2DF32, Triangle3, Triangle3D, Triangle3DF32, TriangleHit,
};
#[cfg(feature = "bench-internals")]
#[doc(hidden)]
pub mod benchmark_support {
pub use crate::hilbert2d::{
ENCODERS, HilbertFn, loop_rotation, lut, magic_bits, magic_bits_batch, morton,
};
pub use crate::sort2d::{SortKey2DStrategy, radix_sort_pairs};
pub use crate::sort3d::{
SortKey3DStrategy, encode_hilbert3_nibble_lut, encode_hilbert3_pair_lut, encode_morton3,
radix_sort_pairs_u64,
};
}