example3/
example3.rs

1use dimension_shiftable_buffer::{
2 Csv,
3 DimensionShiftableBuffer,
4 DimensionShiftableBufferError
5};
6
7fn example_csv()
8{
9 let delimiter = " ";
10 let source = "0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0";
11 let dimension = 3;
12 // construct
13 let mut dsb = DimensionShiftableBuffer::<f32>::from_csv(source, dimension, delimiter).unwrap();
14 // modify-1
15 dsb.for_each(|v| *v += 0.1);
16 // modify-2
17 for n in 0..dsb.len().unwrap()
18 {
19  for v in dsb.get_mut(n).unwrap()
20  {
21   *v *= *v;
22  }
23 }
24 // enumerate
25 for i in 0..18
26 // maybe, 0..5 will ok, 6..18 will err
27 {
28  match dsb.get(i)
29  {
30   Ok(dimensional_elements) =>
31   {
32    for (i_sub, actual) in dimensional_elements.iter().enumerate()
33    {
34     let i_flatten = i * dimension as usize + i_sub;
35     let expected = (i_flatten as f32 + 0.1) * (i_flatten as f32 + 0.1);
36     assert_eq!(actual, &expected);
37    }
38   },
39   Err(e) =>
40   {
41    match e
42    {
43     DimensionShiftableBufferError::OutOfRange {
44      limit: _,
45      requested: _
46     } => (),
47     _ => panic!("unexpected err: {:?}", e)
48    }
49   },
50  }
51 }
52 println!("<<print CSV, as a sequential slice>>\n{}", dsb.to_csv(", "));
53 println!(
54  "<<print CSV, as a dimmensional slices>>\n{}",
55  dsb.to_csv_dimensional(", ", "\n").unwrap()
56 );
57}
58
59fn main()
60{
61 example_csv();
62}