csv_lib/macros.rs
1/// ## Macro `get_i8!`
2/// - Retrieves the field value as an `i8`.
3/// - Panics if conversion fails.
4#[macro_export]
5macro_rules! get_i8 {
6 ($row:expr, $idx:expr) => {
7 $row.get_index($idx).get_i8()
8 };
9}
10
11/// ## Macro `get_u8!`
12/// - Retrieves the field value as a `u8`.
13/// - Panics if conversion fails.
14#[macro_export]
15macro_rules! get_u8 {
16 ($row:expr, $idx:expr) => {
17 $row.get_index($idx).get_u8()
18 };
19}
20
21/// ## Macro `get_i16!`
22/// - Retrieves the field value as an `i16`.
23/// - Panics if conversion fails.
24#[macro_export]
25macro_rules! get_i16 {
26 ($row:expr, $idx:expr) => {
27 $row.get_index($idx).get_i16()
28 };
29}
30
31/// ## Macro `get_u16!`
32/// - Retrieves the field value as a `u16`.
33/// - Panics if conversion fails.
34#[macro_export]
35macro_rules! get_u16 {
36 ($row:expr, $idx:expr) => {
37 $row.get_index($idx).get_u16()
38 };
39}
40
41/// ## Macro `get_i32!`
42/// - Retrieves the field value as an `i32`.
43/// - Panics if conversion fails.
44#[macro_export]
45macro_rules! get_i32 {
46 ($row:expr, $idx:expr) => {
47 $row.get_index($idx).get_i32()
48 };
49}
50
51/// ## Macro `get_u32!`
52/// - Retrieves the field value as a `u32`.
53/// - Panics if conversion fails.
54#[macro_export]
55macro_rules! get_u32 {
56 ($row:expr, $idx:expr) => {
57 $row.get_index($idx).get_u32()
58 };
59}
60
61/// ## Macro `get_i64!`
62/// - Retrieves the field value as an `i64`.
63/// - Panics if conversion fails.
64#[macro_export]
65macro_rules! get_i64 {
66 ($row:expr, $idx:expr) => {
67 $row.get_index($idx).get_i64()
68 };
69}
70
71/// ## Macro `get_u64!`
72/// - Retrieves the field value as a `u64`.
73/// - Panics if conversion fails.
74#[macro_export]
75macro_rules! get_u64 {
76 ($row:expr, $idx:expr) => {
77 $row.get_index($idx).get_u64()
78 };
79}
80
81/// ## Macro `get_f32!`
82/// - Retrieves the field value as an `f32`.
83/// - Panics if conversion fails.
84#[macro_export]
85macro_rules! get_f32 {
86 ($row:expr, $idx:expr) => {
87 $row.get_index($idx).get_f32()
88 };
89}
90
91/// ## Macro `get_f64!`
92/// - Retrieves the field value as an `f64`.
93/// - Panics if conversion fails.
94#[macro_export]
95macro_rules! get_f64 {
96 ($row:expr, $idx:expr) => {
97 $row.get_index($idx).get_f64()
98 };
99}
100
101/// ## Macro `get_bool!`
102/// - Retrieves the field value as a boolean.
103/// - Supports `"true"`, `"false"`, `"1"`, and `"0"` values.
104#[macro_export]
105macro_rules! get_bool {
106 ($row:expr, $idx:expr) => {
107 $row.get_index($idx).get_boolean()
108 };
109}
110
111/// ## Macro `get_str!`
112/// - Returns a `&str` decoded using the specified encoding.
113/// - Uses `.get_as_cow_decoded(encoding).as_ref()`.
114#[macro_export]
115macro_rules! get_str {
116 ($row:expr, $idx:expr, $enc: expr) => {
117 $row.get_index($idx).get_as_cow_decoded($enc).as_ref()
118 };
119}
120
121/// ## Macro `get_cow!`
122/// - Returns a `Cow<str>` decoded using the specified encoding.
123/// - Uses `.get_as_cow_decoded(encoding)`.
124#[macro_export]
125macro_rules! get_cow {
126 ($row:expr, $idx:expr, $enc: expr) => {
127 $row.get_index($idx).get_as_cow_decoded($enc)
128 };
129}
130
131/// ## Macro `get_str_utf8!`
132/// - Returns the UTF-8 `&str` from the field content.
133/// - No decoding applied.
134#[macro_export]
135macro_rules! get_str_utf8 {
136 ($row:expr, $idx:expr) => {
137 $row.get_index($idx).get_utf8_as_str()
138 };
139}
140
141/// ## Macro `get_string!`
142/// - Returns the field content as a `String` decoded with the specified encoding.
143#[macro_export]
144macro_rules! get_string {
145 ($row:expr, $idx:expr, $enc: expr) => {
146 $row.get_index($idx).get_as_string($enc)
147 };
148}
149
150/// ## Macro `get_raw!`
151/// - Returns the raw byte slice `&[u8]` of the field.
152/// - No conversion or decoding is performed.
153#[macro_export]
154macro_rules! get_raw {
155 ($row:expr, $idx:expr) => {
156 $row.get_index($idx).get_slice()
157 };
158}
159
160/// ## Macro `is_empty_field!`
161/// - Returns `true` if the field is empty (e.g., `""` or null-equivalent).
162#[macro_export]
163macro_rules! is_empty_field {
164 ($row:expr, $idx:expr) => {
165 $row.get_index($idx).is_empty()
166 };
167}
168
169/// ## Macro `is_numeric_like!`
170/// - Returns `true` if the field looks like a valid numeric value.
171/// - Useful for quick validation.
172#[macro_export]
173macro_rules! is_numeric_like {
174 ($row:expr, $idx:expr) => {
175 $row.get_index($idx).is_numeric_like()
176 };
177}