discreet_common/
diff_eq.rs1pub struct Derivative<Expr: Expression, Variable: self::Variable> {
2 _e: std::marker::PhantomData<Expr>,
3 _v: std::marker::PhantomData<Variable>,
4}
5impl<E: Expression, V: Variable> Expression for Derivative<E, V> {
6 fn eval() -> Expr {
7 Expr::Derivative {
8 expr: Box::new(E::eval()),
9 var: V::get_name(),
10 }
11 }
12}
13
14enum Expr {
15 Derivative { expr: Box<Self>, var: String },
16}
17
18trait Expression {
19 fn eval() -> Expr;
20}
21
22pub trait Variable {
23 fn get_name() -> String;
24}