use core::marker::PhantomData;
type InterScalar = f64;
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct InterpolationFrankenstein<S, K, E, I>
where
S: Scalar,
K: Knots,
E: Samples<Input = K::Output>,
I: InterpolationFunction<Construct = E>,
{
scalar: PhantomData<S>,
knots: K,
elements: E,
interpolation: I,
}
pub trait InterpolationFunction {
type Construct: Samples;
type Output;
fn interpolate(elements: <Self::Construct as Samples>::Output) -> Self::Output;
}
pub trait Scalar {}
pub trait Samples {
type Input;
type Output;
}
pub trait Knots {
type Output;
}