example2/
example2.rs

1use dimension_shiftable_buffer::DimensionShiftableBuffer;
2
3fn example_f32()
4{
5 // Index of 1D =>           0      |1   |2   |3   |4   |5   |6   |7   |8   |
6 // Index of 2D =>           0,0     0,1 |1,0  1,1 |2,0  2,1 |3,0  3,1 |4,0  4,1 |
7 // Index of 3D =>           0,0     0,1  0,2 |1,0  1,1  1,2 |2,0  2,1  2,2 |
8 // Index of 7D =>           0,0     0,1  0,2  0,3  0,4  0,5  0,6 |1,0  1,1  1,2  1,3  1,4  1,5  1,6 |
9 let entity = vec![1.1f32, 1.2, 1.3, 2.1, 2.2, 2.3, 3.1, 3.2, 3.3];
10 let dimension = 1;
11
12 let mut dsb = DimensionShiftableBuffer::<f32>::new(entity, dimension).unwrap();
13
14 let d1_i3 = dsb.get(3).unwrap();
15 assert_eq!(d1_i3, [2.1f32]);
16
17 dsb.shift_dimension(3).unwrap();
18
19 let d3_i2 = dsb.get(2).unwrap();
20 assert_eq!(d3_i2, [3.1f32, 3.2, 3.3]);
21
22 match dsb.shift_dimension(2)
23 {
24  Ok(_) => panic!("Detect an unexpected false-ok."),
25  Err(_) => eprintln!("Expected err.")
26 }
27
28 dsb.shift_dimension_truncate(2).unwrap();
29
30 let d2_i1 = dsb.get(1).unwrap();
31 assert_eq!(d2_i1, [1.3f32, 2.1]);
32
33 dsb.shift_dimension_padding(7, std::f32::NAN).unwrap();
34 let d7_i1 = dsb.get(1).unwrap();
35 assert_eq!(
36  // rounding, just easily
37  format!("{:?}", d7_i1),
38  format!("{:?}", &[
39   // [0] of 7-d
40   3.2f32,
41   // [1] of 7-d, truncated at .shift_dimension.truncate(2) -> padding at .shift_dimension_padding(7)
42   std::f32::NAN,
43   // [2] of 7-d, padding at .shift_dimension_padding(7)
44   std::f32::NAN,
45   std::f32::NAN,
46   std::f32::NAN,
47   std::f32::NAN,
48   std::f32::NAN
49  ])
50 )
51}
52
53fn main()
54{
55 example_f32();
56}