nalgebra_sparse/convert/
impl_std_ops.rs

1use crate::convert::serial::*;
2use crate::coo::CooMatrix;
3use crate::csc::CscMatrix;
4use crate::csr::CsrMatrix;
5use nalgebra::storage::RawStorage;
6use nalgebra::{ClosedAddAssign, DMatrix, Dim, Matrix, Scalar};
7use num_traits::Zero;
8
9impl<'a, T, R, C, S> From<&'a Matrix<T, R, C, S>> for CooMatrix<T>
10where
11    T: Scalar + Zero,
12    R: Dim,
13    C: Dim,
14    S: RawStorage<T, R, C>,
15{
16    fn from(matrix: &'a Matrix<T, R, C, S>) -> Self {
17        convert_dense_coo(matrix)
18    }
19}
20
21impl<'a, T> From<&'a CooMatrix<T>> for DMatrix<T>
22where
23    T: Scalar + Zero + ClosedAddAssign,
24{
25    fn from(coo: &'a CooMatrix<T>) -> Self {
26        convert_coo_dense(coo)
27    }
28}
29
30impl<'a, T> From<&'a CooMatrix<T>> for CsrMatrix<T>
31where
32    T: Scalar + Zero + ClosedAddAssign,
33{
34    fn from(matrix: &'a CooMatrix<T>) -> Self {
35        convert_coo_csr(matrix)
36    }
37}
38
39impl<'a, T> From<&'a CsrMatrix<T>> for CooMatrix<T>
40where
41    T: Scalar + Zero + ClosedAddAssign,
42{
43    fn from(matrix: &'a CsrMatrix<T>) -> Self {
44        convert_csr_coo(matrix)
45    }
46}
47
48impl<'a, T, R, C, S> From<&'a Matrix<T, R, C, S>> for CsrMatrix<T>
49where
50    T: Scalar + Zero,
51    R: Dim,
52    C: Dim,
53    S: RawStorage<T, R, C>,
54{
55    fn from(matrix: &'a Matrix<T, R, C, S>) -> Self {
56        convert_dense_csr(matrix)
57    }
58}
59
60impl<'a, T> From<&'a CsrMatrix<T>> for DMatrix<T>
61where
62    T: Scalar + Zero + ClosedAddAssign,
63{
64    fn from(matrix: &'a CsrMatrix<T>) -> Self {
65        convert_csr_dense(matrix)
66    }
67}
68
69impl<'a, T> From<&'a CooMatrix<T>> for CscMatrix<T>
70where
71    T: Scalar + Zero + ClosedAddAssign,
72{
73    fn from(matrix: &'a CooMatrix<T>) -> Self {
74        convert_coo_csc(matrix)
75    }
76}
77
78impl<'a, T> From<&'a CscMatrix<T>> for CooMatrix<T>
79where
80    T: Scalar + Zero,
81{
82    fn from(matrix: &'a CscMatrix<T>) -> Self {
83        convert_csc_coo(matrix)
84    }
85}
86
87impl<'a, T, R, C, S> From<&'a Matrix<T, R, C, S>> for CscMatrix<T>
88where
89    T: Scalar + Zero,
90    R: Dim,
91    C: Dim,
92    S: RawStorage<T, R, C>,
93{
94    fn from(matrix: &'a Matrix<T, R, C, S>) -> Self {
95        convert_dense_csc(matrix)
96    }
97}
98
99impl<'a, T> From<&'a CscMatrix<T>> for DMatrix<T>
100where
101    T: Scalar + Zero + ClosedAddAssign,
102{
103    fn from(matrix: &'a CscMatrix<T>) -> Self {
104        convert_csc_dense(matrix)
105    }
106}
107
108impl<'a, T> From<&'a CscMatrix<T>> for CsrMatrix<T>
109where
110    T: Scalar,
111{
112    fn from(matrix: &'a CscMatrix<T>) -> Self {
113        convert_csc_csr(matrix)
114    }
115}
116
117impl<'a, T> From<&'a CsrMatrix<T>> for CscMatrix<T>
118where
119    T: Scalar,
120{
121    fn from(matrix: &'a CsrMatrix<T>) -> Self {
122        convert_csr_csc(matrix)
123    }
124}