Skip to main content

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}