1use crate::{DefaultDenseMatrix, Matrix, Vector};
2
3#[cfg(feature = "cuda")]
4pub mod cuda;
5
6#[cfg(feature = "nalgebra")]
7pub mod nalgebra;
8
9#[cfg(feature = "faer")]
10pub mod faer;
11
12pub trait Context: Clone + Default {
21 fn vector_from_element<V: Vector<C = Self>>(&self, len: usize, value: V::T) -> V {
22 V::from_element(len, value, self.clone())
23 }
24 fn vector_from_vec<V: Vector<C = Self>>(&self, vec: Vec<V::T>) -> V {
25 V::from_vec(vec, self.clone())
26 }
27 fn vector_zeros<V: Vector<C = Self>>(&self, len: usize) -> V {
28 V::zeros(len, self.clone())
29 }
30 fn dense_mat_zeros<V: Vector<C = Self> + DefaultDenseMatrix>(
31 &self,
32 rows: usize,
33 cols: usize,
34 ) -> <V as DefaultDenseMatrix>::M {
35 <<V as DefaultDenseMatrix>::M as Matrix>::zeros(rows, cols, self.clone())
36 }
37}
38
39impl<T: Clone + Default> Context for T {}