@@ -13,13 +13,13 @@ use crate::range::{RangeIter, Range};
13
13
14
14
#[ repr( transparent) ]
15
15
#[ derive( Clone , Hash , PartialOrd , Ord ) ]
16
- pub struct Matrix < const X : usize , const Y : usize , T : Number =f64 >
16
+ pub struct Matrix < const X : usize , const Y : usize , T : Number =f64 , D : AsRef < [ T ; X * Y ] > = Box < [ T ; X * Y ] > >
17
17
where [ T ; X * Y ] : Sized
18
18
{
19
- data : Box < [ T ; X * Y ] >
19
+ data : D
20
20
}
21
21
22
- impl < const X : usize , const Y : usize , T : Number > Matrix < X , Y , T >
22
+ impl < const X : usize , const Y : usize , T : Number , D : AsRef < [ T ; X * Y ] > > Matrix < X , Y , T , D >
23
23
where [ T ; X * Y ] : Sized
24
24
{
25
25
pub const X : usize = X ;
@@ -118,17 +118,18 @@ where [T; X * Y]: Sized
118
118
119
119
#[ inline]
120
120
pub fn data ( & self ) -> & [ T ; X * Y ] {
121
- & self . data
121
+ self . data . as_ref ( )
122
122
}
123
123
124
124
#[ inline]
125
- pub fn data_mut ( & mut self ) -> & mut [ T ; X * Y ] {
126
- & mut self . data
125
+ pub fn data_mut ( & mut self ) -> & mut [ T ; X * Y ]
126
+ where D : AsMut < [ T ; X * Y ] > {
127
+ self . data . as_mut ( )
127
128
}
128
129
129
130
#[ inline]
130
- pub fn into_data ( self ) -> [ T ; X * Y ] {
131
- * self . data
131
+ pub fn into_data ( self ) -> D {
132
+ self . data
132
133
}
133
134
134
135
#[ inline]
@@ -327,13 +328,13 @@ where [T; X * Y]: Sized
327
328
}
328
329
}
329
330
330
- impl < const X : usize , const Y : usize , T : Number > Tap for Matrix < X , Y , T >
331
+ impl < const X : usize , const Y : usize , T : Number , D : AsRef < [ T ; X * Y ] > > Tap for Matrix < X , Y , T , D >
331
332
where [ T ; X * Y ] : Sized { }
332
333
333
- impl < const X : usize , const Y : usize , T : Number > Pipe for Matrix < X , Y , T >
334
+ impl < const X : usize , const Y : usize , T : Number , D : AsRef < [ T ; X * Y ] > > Pipe for Matrix < X , Y , T , D >
334
335
where [ T ; X * Y ] : Sized { }
335
336
336
- impl < const X : usize , const Y : usize , T : Number > MatrixAggregate < X , Y , T > for Matrix < X , Y , T >
337
+ impl < const X : usize , const Y : usize , T : Number , D : AsRef < [ T ; X * Y ] > > MatrixAggregate < X , Y , T > for Matrix < X , Y , T , D >
337
338
where [ T ; X * Y ] : Sized {
338
339
#[ inline]
339
340
fn fold < F , B > ( & self , init : B , mut f : F ) -> Vector < Y , B >
0 commit comments