1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use matrix::view::MatrixView;
use matrix::traits::*;
use algebra::structure::MagmaBase;
impl <'a, T:MagmaBase> Conversion<T> for MatrixView<'a, T> {
fn to_std_vec(&self) -> Vec<T> {
let mut vec: Vec<T> = Vec::with_capacity(self.num_cells());
let ptr = self.matrix().as_ptr();
for c in 0..self.num_cols(){
for r in 0..self.num_rows(){
let offset = self.cell_to_offset(r, c);
vec.push(unsafe{*ptr.offset(offset)});
}
}
vec
}
}
#[cfg(test)]
mod test{
use matrix::traits::*;
use matrix::constructors::*;
#[test]
fn test_view_to_scalar(){
let m = matrix_rw_i32(3, 3, &[1, 2, 3,
4, 5, 6,
7, 8, 9]);
let v = m.view(2,1, 1, 1);
assert_eq!(v.to_scalar(), 8);
}
}