Skip to main content

discreet_common/
diff_eq.rs

1pub 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}