pub trait Gradient<T> { type Gradient; // Required method fn grad(&self, args: T) -> Self::Gradient; }