diff -r e7920e205785 -r 5df5258332d1 src/instance.rs --- a/src/instance.rs Tue Sep 02 15:18:30 2025 -0500 +++ b/src/instance.rs Wed Sep 03 08:40:17 2025 -0500 @@ -215,14 +215,14 @@ Self: 'b; /// Returns an owned instance of `X`, cloning or converting non-true instances when necessary. - fn own(self) -> D::OwnedInstance; + fn own(self) -> X; // ************** automatically implemented methods below from here ************** /// Returns an owned instance or reference to `X`, converting non-true instances when necessary. /// /// Default implementation uses [`Self::own`]. Consumes the input. - fn cow<'b>(self) -> MyCow<'b, D::OwnedInstance> + fn cow<'b>(self) -> MyCow<'b, X> where Self: 'b, { @@ -233,7 +233,7 @@ /// Evaluates `f` on a reference to self. /// /// Default implementation uses [`Self::cow`]. Consumes the input. - fn eval<'b, R>(self, f: impl FnOnce(&D::OwnedInstance) -> R) -> R + fn eval<'b, R>(self, f: impl FnOnce(&X) -> R) -> R where X: 'b, Self: 'b, @@ -245,11 +245,7 @@ /// Evaluates `f` or `g` depending on whether a reference or owned value is available. /// /// Default implementation uses [`Self::cow`]. Consumes the input. - fn either<'b, R>( - self, - f: impl FnOnce(D::OwnedInstance) -> R, - g: impl FnOnce(&D::OwnedInstance) -> R, - ) -> R + fn either<'b, R>(self, f: impl FnOnce(X) -> R, g: impl FnOnce(&X) -> R) -> R where Self: 'b, {