03_reshape_flatten/03_reshape_flatten.rs
1//! Reshape and flatten: same flat data, different shape.
2//!
3//! Run: cargo run --example 03_reshape_flatten
4
5use matten::Tensor;
6
7fn main() {
8 let t = Tensor::new(vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0], &[2, 3]);
9 println!("original {t:?}");
10
11 let r = t.reshape(&[3, 2]);
12 println!("reshaped {r:?}");
13
14 let flat = t.flatten();
15 println!("flat {flat:?}");
16
17 // try_reshape for user-provided shapes
18 let bad = t.try_reshape(&[4, 2]);
19 println!("bad reshape: {}", bad.unwrap_err());
20
21 // Flat data order is preserved through reshape
22 assert_eq!(t.as_slice(), r.as_slice());
23 println!("Flat data order preserved: OK");
24}