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
+{
+}