src/nalgebra_support.rs

branch
dev
changeset 151
402d717bb5c0
parent 150
c4e394a9c84c
child 152
dab30b331f49
child 156
adf3c425c7a9
--- a/src/nalgebra_support.rs	Mon Sep 01 13:51:03 2025 -0500
+++ b/src/nalgebra_support.rs	Mon Sep 01 20:55:34 2025 -0500
@@ -273,10 +273,12 @@
 impl<E, M, S> Euclidean<E> for Vector<E, M, S>
 where
     M: Dim,
-    S: StorageMut<E, M> + Clone,
+    S: Storage<E, M>,
     E: Float + Scalar + Zero + One + RealField,
     DefaultAllocator: Allocator<M>,
 {
+    type OwnedEuclidean = OVector<E, M>;
+
     #[inline]
     fn dot<I: Instance<Self>>(&self, other: I) -> E {
         other.eval_ref_decompose(|r| Vector::<E, M, S>::dot(self, r))
@@ -296,7 +298,7 @@
 impl<E, M, S> StaticEuclidean<E> for Vector<E, M, S>
 where
     M: DimName,
-    S: StorageMut<E, M> + Clone,
+    S: Storage<E, M>,
     E: Float + Scalar + Zero + One + RealField,
     DefaultAllocator: Allocator<M>,
 {
@@ -310,7 +312,7 @@
 impl<E, M, S> Normed<E> for Vector<E, M, S>
 where
     M: Dim,
-    S: Storage<E, M> + Clone,
+    S: Storage<E, M>,
     E: Float + Scalar + Zero + One + RealField,
     DefaultAllocator: Allocator<M>,
 {
@@ -330,12 +332,11 @@
 impl<E, M, S> HasDual<E> for Vector<E, M, S>
 where
     M: Dim,
-    S: StorageMut<E, M> + Clone,
+    S: Storage<E, M>,
     E: Float + Scalar + Zero + One + RealField,
     DefaultAllocator: Allocator<M>,
 {
-    // TODO: Doesn't work with different storage formats.
-    type DualSpace = Vector<E, M, S>;
+    type DualSpace = OVector<E, M>;
 
     fn dual_origin(&self) -> OVector<E, M> {
         OVector::zeros_generic(M::from_usize(self.len()), Const)

mercurial