mod adaptors;
mod list;
mod signal;
mod space;
#[allow(unreachable_pub)]
pub use adaptors::{Clamp, Composite, Repeat, Slice, Stack, TransformInput, Wrap};
#[allow(unreachable_pub)]
pub use list::{ConstEquidistant, Equidistant, NotSorted, Sorted, SortedChain};
#[allow(unreachable_pub)]
pub use signal::{Chain, ConstChain, Curve, Extract, Signal, Stepper};
#[allow(unreachable_pub)]
#[cfg(feature = "std")]
pub use space::DynSpace;
#[allow(unreachable_pub)]
pub use space::{ConstSpace, Space};
#[cfg(feature = "std")]
impl<T: Copy> Signal<usize> for Vec<T> {
type Output = T;
fn eval(&self, input: usize) -> Self::Output {
self[input]
}
}
#[cfg(feature = "std")]
impl<T: Copy> Chain for Vec<T> {
fn len(&self) -> usize {
self.len()
}
}
impl<T: Copy> Signal<usize> for &[T] {
type Output = T;
fn eval(&self, input: usize) -> Self::Output {
self[input]
}
}
impl<T: Copy> Chain for &[T] {
fn len(&self) -> usize {
<[T]>::len(self)
}
}
impl<T: Copy, const N: usize> Signal<usize> for [T; N] {
type Output = T;
fn eval(&self, input: usize) -> Self::Output {
self[input]
}
}
impl<T: Copy, const N: usize> Chain for [T; N] {
fn len(&self) -> usize {
N
}
}
impl<T: Copy, const N: usize> ConstChain<N> for [T; N] {}