zenu_matrix/constructor/
from_vec.rs1use 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}