print_arrays/
print_arrays.rs1use std::sync::Arc;
9
10use minarrow::aliases::{BoolArr, CatArr, FltArr, IntArr, StrArr};
11use minarrow::enums::array::Array;
12use minarrow::{Bitmask, MaskedArray, NumericArray, Print, TextArray};
13
14#[cfg(feature = "views")]
15use minarrow::{ArrayV, BitmaskV, NumericArrayV, TextArrayV};
16
17#[cfg(feature = "datetime")]
18use minarrow::{DatetimeArray, TemporalArray};
19
20fn main() {
21 let col_i32 = IntArr::<i32>::from_slice(&[1, 2, 3, 4, 5]);
23 let col_u32 = IntArr::<u32>::from_slice(&[100, 200, 300, 400, 500]);
24 let col_f32 = FltArr::<f32>::from_slice(&[1.1, 2.2, 3.3, 4.4, 5.5]);
25
26 let mut col_bool = BoolArr::from_slice(&[true, false, true, false, true]);
28 col_bool.set_null_mask(Some(Bitmask::from_bools(&[true, true, true, false, true])));
29
30 let col_str32 = StrArr::from_slice(&["red", "blue", "green", "yellow", "purple"]);
32
33 let col_cat32 = CatArr::<u32>::from_values(
34 ["apple", "banana", "cherry", "banana", "apple"]
35 .iter()
36 .copied(),
37 );
38
39 #[cfg(feature = "datetime")]
41 let col_dt32 = DatetimeArray::<i32>::from_slice(
42 &[1000, 2000, 3000, 4000, 5000],
43 Some(minarrow::enums::time_units::TimeUnit::Milliseconds),
44 );
45 #[cfg(feature = "datetime")]
46 let col_dt64 = DatetimeArray::<i64>::from_slice(
47 &[
48 1_000_000_000,
49 2_000_000_000,
50 3_000_000_000,
51 4_000_000_000,
52 5_000_000_000,
53 ],
54 Some(minarrow::enums::time_units::TimeUnit::Nanoseconds),
55 );
56
57 #[cfg(feature = "datetime")]
58 col_dt32.print();
59 #[cfg(feature = "datetime")]
60 println!("\n");
61 #[cfg(feature = "datetime")]
62 col_dt64.print();
63 #[cfg(feature = "datetime")]
64 println!("\n");
65
66 println!("\n--- Enums: NumericArray, TextArray, TemporalArray ---");
68 NumericArray::Int32(Arc::new(col_i32.clone())).print();
69 println!("\n");
70 NumericArray::UInt32(Arc::new(col_u32.clone())).print();
71 println!("\n");
72 NumericArray::Float32(Arc::new(col_f32.clone())).print();
73 println!("\n");
74 TextArray::String32(Arc::new(col_str32.clone())).print();
75 println!("\n");
76 let _ = &TextArray::Categorical32(Arc::new(col_cat32.clone())).print();
77
78 println!("\n/ *** To display as dates, enable the optional 'chrono' feature *** /\n");
79
80 #[cfg(feature = "datetime")]
81 let _ = &TemporalArray::Datetime32(Arc::new(col_dt32.clone())).print();
82 println!("\n");
83 #[cfg(feature = "datetime")]
84 let _ = &TemporalArray::Datetime64(Arc::new(col_dt64.clone())).print();
85 println!("\n");
86
87 println!("\n--- Array (top-level) ---");
88 Array::from_int32(col_i32.clone()).print();
89 println!("\n");
90 Array::from_uint32(col_u32.clone()).print();
91 println!("\n");
92 Array::from_float32(col_f32.clone()).print();
93 println!("\n");
94 Array::from_string32(col_str32.clone()).print();
95 println!("\n");
96 Array::from_categorical32(col_cat32.clone()).print();
97 println!("\n");
98 #[cfg(feature = "datetime")]
99 Array::from_datetime_i32(col_dt32.clone()).print();
100 println!("\n");
101 #[cfg(feature = "views")]
103 println!("\n--- Array Views ---");
104 #[cfg(feature = "views")]
105 ArrayV::new(Array::from_int32(col_i32.clone()), 1, 3).print();
106
107 let num_arr = NumericArray::Int32(Arc::new(col_i32.clone()));
108 num_arr.print();
109
110 #[cfg(feature = "views")]
111 let num_view = NumericArrayV::new(num_arr, 1, 3);
112 #[cfg(feature = "views")]
113 num_view.print();
114
115 let txt_arr = TextArray::String32(Arc::new(col_str32.clone()));
116 txt_arr.print();
117
118 #[cfg(feature = "views")]
119 let txt_view = TextArrayV::new(txt_arr, 1, 3);
120 #[cfg(feature = "views")]
121 txt_view.print();
122
123 #[cfg(all(feature = "datetime", feature = "views"))]
124 {
125 use minarrow::TemporalArrayV;
126
127 let tmp_arr = TemporalArray::Datetime32(Arc::new(col_dt32.clone()));
128 tmp_arr.print();
129 TemporalArrayV::new(tmp_arr, 1, 3).print();
130 }
131
132 println!("\n--- Bitmask & BitmaskV ---");
134 let bm = Bitmask::from_bools(&[true, false, true, true, false]);
135 bm.print();
136 #[cfg(feature = "views")]
137 BitmaskV::new(bm.clone(), 1, 3).print();
138}