diff -r 2f1798c65fd6 -r c4e394a9c84c src/mapping/dataterm.rs --- a/src/mapping/dataterm.rs Mon Sep 01 00:04:22 2025 -0500 +++ b/src/mapping/dataterm.rs Mon Sep 01 13:51:03 2025 -0500 @@ -8,7 +8,7 @@ use super::{DifferentiableImpl, DifferentiableMapping, LipschitzDifferentiableImpl, Mapping}; use crate::convex::ConvexMapping; use crate::error::DynResult; -use crate::instance::{Instance, Space}; +use crate::instance::{ClosedSpace, Instance, Space}; use crate::linops::{BoundedLinear, Linear, Preadjointable}; use crate::norms::{Normed, L2}; use crate::types::Float; @@ -41,11 +41,7 @@ G: Mapping + Clone, { fn clone(&self) -> Self { - DataTerm { - opA: self.opA.clone(), - b: self.b.clone(), - g: self.g.clone(), - } + DataTerm { opA: self.opA.clone(), b: self.b.clone(), g: self.g.clone() } } } @@ -78,7 +74,7 @@ X: Space, A: Mapping, G: Mapping, - A::Codomain: for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, + A::Codomain: ClosedSpace + for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, { type Codomain = F; @@ -97,7 +93,7 @@ X: Normed, A: Linear, G: ConvexMapping, - A::Codomain: Normed + for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, + A::Codomain: ClosedSpace + Normed + for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, { } @@ -105,9 +101,11 @@ where F: Float, X: Space, - Y: Space + for<'a> Sub<&'a Y, Output = Y>, + Y: Space + Instance + for<'a> Sub<&'a Y, Output = Y>, //>::Codomain: Euclidean, A: Linear + Preadjointable, + G::DerivativeDomain: Instance, + A::PreadjointCodomain: ClosedSpace, //<>::Codomain as Euclidean>::Output: Instance<>::Codomain>, G: DifferentiableMapping, {