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
42
43
44
45
46
47
48
49
50
51
use crate::indexing::SpIndex;
use crate::sparse::prelude::*;
use std::ops::Deref;
pub trait SpMatView<N, I: SpIndex, Iptr: SpIndex = I> {
fn view(&self) -> CsMatViewI<N, I, Iptr>;
fn transpose_view(&self) -> CsMatViewI<N, I, Iptr>;
}
impl<N, I, Iptr, IpStorage, IndStorage, DataStorage> SpMatView<N, I, Iptr>
for CsMatBase<N, I, IpStorage, IndStorage, DataStorage, Iptr>
where
I: SpIndex,
Iptr: SpIndex,
IpStorage: Deref<Target = [Iptr]>,
IndStorage: Deref<Target = [I]>,
DataStorage: Deref<Target = [N]>,
{
fn view(&self) -> CsMatViewI<N, I, Iptr> {
self.view()
}
fn transpose_view(&self) -> CsMatViewI<N, I, Iptr> {
self.transpose_view()
}
}
pub trait SpVecView<N, I: SpIndex> {
fn view(&self) -> CsVecViewI<N, I>;
}
impl<N, I, IndStorage, DataStorage> SpVecView<N, I>
for CsVecBase<IndStorage, DataStorage, N, I>
where
IndStorage: Deref<Target = [I]>,
DataStorage: Deref<Target = [N]>,
I: SpIndex,
{
fn view(&self) -> CsVecViewI<N, I> {
self.view()
}
}