pub trait Filter: Sized + Sync {
fn compute_at<T: Type, C: Color, I: Image<T, C>>(
&self,
x: usize,
y: usize,
c: usize,
input: &[&I]
) -> f64;
fn eval_s<T: Type, C: Color, U: Type, D: Color, I: Image<T, C>, J: Image<U, D>>(
&self,
output: &mut I,
input: &[&J]
) { ... }
fn eval<T: Send + Type, C: Color, U: Type, D: Color, I: Sync + Send + Image<T, C>, J: Sync + Image<U, D>>(
&self,
output: &mut I,
input: &[&J]
) { ... }
fn join<A: Filter, F: Fn(f64, f64) -> f64>(
&self,
other: A,
f: F
) -> Join<'_, Self, A, F> { ... }
fn and_then<F: Fn(f64) -> f64>(&self, f: F) -> AndThen<'_, Self, F> { ... }
}