diff --git a/src/explicit.rs b/src/explicit.rs index a5e1d86..a34f974 100644 --- a/src/explicit.rs +++ b/src/explicit.rs @@ -164,7 +164,7 @@ impl RK4Buffer } } -impl TimeEvolutionBuffered> for RK4 +impl TimeEvolutionBufferedBase> for RK4 where A: Scalar, S: DataMut, D: Dimension, @@ -172,7 +172,6 @@ impl TimeEvolutionBuffered> for RK4(&self, mut x: &'a mut ArrayBase, mut buf: &mut RK4Buffer) diff --git a/src/traits.rs b/src/traits.rs index 967141a..162c2e4 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -55,7 +55,7 @@ pub trait TimeEvolution } /// Time-evolution operator with buffer -pub trait TimeEvolutionBuffered: ModelSize + TimeStep +pub trait TimeEvolutionBufferedBase: ModelSize + TimeStep where S: DataMut, D: Dimension { @@ -63,3 +63,12 @@ pub trait TimeEvolutionBuffered: ModelSize + TimeStep /// calculate next step fn iterate_buf<'a>(&self, &'a mut ArrayBase, &mut Buffer) -> &'a mut ArrayBase; } + +pub trait TimeEvolutionBuffered + : TimeEvolutionBufferedBase, D, Buffer, Scalar = A, Time = A::Real> + + TimeEvolutionBufferedBase, D, Buffer, Scalar = A, Time = A::Real> + + for<'a> TimeEvolutionBufferedBase, D, Buffer, Scalar = A, Time = A::Real> + where A: Scalar, + D: Dimension +{ +}