nalgebra_sparse/convert/
impl_std_ops.rs1use 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}