use std::mem::ManuallyDrop;
use thiserror::Error;
mod dim_extensions;
pub mod interp1d;
pub mod interp2d;
pub mod vector_extensions;
#[derive(Debug, Error)]
pub enum BuilderError {
#[error("{0}")]
NotEnoughData(String),
#[error("{0}")]
Monotonic(String),
#[error("{0}")]
AxisLenght(String),
#[error("{0}")]
DimensionError(String),
}
#[derive(Debug, Error)]
pub enum InterpolateError {
#[error("{0}")]
OutOfBounds(String),
}
unsafe fn cast_unchecked<A, B>(a: A) -> B {
let ptr = &*ManuallyDrop::new(a) as *const A as *const B;
unsafe { ptr.read() }
}