#![no_std]
#[macro_use]
extern crate alloc;
extern crate is_sorted;
extern crate pdqselect;
pub extern crate axgeom;
mod inner_prelude {
pub(crate) use super::*;
pub(crate) use crate::tree;
pub(crate) use crate::tree::analyze::*;
pub use alloc::vec::Vec;
pub use axgeom::*;
pub(crate) use compt::Visitor;
pub use core::iter::*;
pub use core::marker::PhantomData;
pub(crate) use crate::bbox::*;
pub(crate) use crate::pmut::*;
pub(crate) use crate::tree::par;
pub(crate) use crate::tree::*;
}
pub mod query;
use axgeom::*;
pub use self::tree::*;
#[deprecated(
note = "use the broccoli crate instead"
)]
mod tree;
mod oned;
pub mod pmut;
mod bbox;
pub use crate::bbox::*;
pub mod util;
pub trait Num: Ord + Copy + Send + Sync {}
impl<T> Num for T where T: Ord + Copy + Send + Sync {}
pub unsafe trait Aabb {
type Num: Num;
fn get(&self) -> &Rect<Self::Num>;
}
unsafe impl<N: Num> Aabb for Rect<N> {
type Num = N;
fn get(&self) -> &Rect<Self::Num> {
self
}
}
pub unsafe trait HasInner: Aabb {
type Inner;
#[inline(always)]
fn inner_mut(&mut self) -> &mut Self::Inner {
self.get_inner_mut().1
}
#[inline(always)]
fn inner(&self) -> &Self::Inner {
self.get_inner().1
}
fn get_inner(&self) -> (&Rect<Self::Num>, &Self::Inner);
fn get_inner_mut(&mut self) -> (&Rect<Self::Num>, &mut Self::Inner);
}