use super::*;
const N: usize = 0;
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
pub struct Interp0D<T>(pub T);
impl<T> Interp0D<T>
where
T: PartialEq + Debug,
{
pub fn new(value: T) -> Self {
Self(value)
}
}
impl<T> Interpolator<T> for Interp0D<T>
where
T: Clone + Debug,
{
#[inline]
fn ndim(&self) -> usize {
N
}
#[inline]
fn validate(&mut self) -> Result<(), ValidateError> {
Ok(())
}
fn interpolate(&self, point: &[T]) -> Result<T, InterpolateError> {
if !point.is_empty() {
return Err(InterpolateError::PointLength(N));
}
Ok(self.0.clone())
}
#[inline]
fn set_extrapolate(&mut self, _extrapolate: Extrapolate<T>) -> Result<(), ValidateError> {
Ok(())
}
}
#[cfg(test)]
mod tests {
#[allow(unused_imports)]
use super::*;
#[test]
#[cfg(feature = "serde")]
fn test_serde() {
let interp = Interp0D::new(0.5);
let ser = serde_json::to_string(&interp).unwrap();
let de: Interp0D<_> = serde_json::from_str(&ser).unwrap();
assert_eq!(interp, de);
}
}