zenu_matrix/constructor/
from_vec.rs

1use crate::{
2    device::DeviceBase,
3    dim::{default_stride, DimTrait},
4    matrix::{Matrix, Owned, Ptr},
5    num::Num,
6};
7
8impl<T, S, D> Matrix<Owned<T>, S, D>
9where
10    T: Num,
11    D: DeviceBase,
12    S: DimTrait,
13{
14    #[expect(clippy::missing_panics_doc)]
15    pub fn from_vec<I: Into<S>>(vec: Vec<T>, shape: I) -> Self {
16        let shape = shape.into();
17        assert!(
18            vec.len() == shape.num_elm(),
19            "Invalid Shape, vec.len() = {}, shape.num_elm() = {}",
20            vec.len(),
21            shape.num_elm()
22        );
23
24        let len = vec.len();
25
26        let ptr = Ptr::new(D::from_vec(vec), len, 0);
27
28        let stride = default_stride(shape);
29        Matrix::new(ptr, shape, stride)
30    }
31}