use crate::StrError;
use crate::{Params, Workspace};
use russell_lab::Vector;
pub(crate) trait OdeSolverTrait<A>: Send {
fn enable_dense_output(&mut self) -> Result<(), StrError>;
fn step(&mut self, work: &mut Workspace, x: f64, y: &Vector, h: f64, args: &mut A) -> Result<(), StrError>;
fn accept(
&mut self,
work: &mut Workspace,
x: &mut f64,
y: &mut Vector,
h: f64,
args: &mut A,
) -> Result<(), StrError>;
fn reject(&mut self, work: &mut Workspace, h: f64);
fn dense_output(&self, y_out: &mut Vector, x_out: f64, x: f64, y: &Vector, h: f64);
fn update_params(&mut self, params: Params);
}