1 macro_rules! scanf {
2 ( $string:expr, $sep:expr, $( $x:ty ),+ ) => {{
3 let mut iter = $string.split($sep);
4 ($(iter.next().and_then(|word| word.parse::<$x>().ok()),)*)
5 }}
6 }
7
8 pub(crate) use scanf;
9
10 use bytes::BytesMut;
print(title: &str, data: BytesMut)11 pub fn print(title: &str, data: BytesMut) {
12 println!("==========={}:{}", title, data.len());
13 let mut idx = 0;
14 for i in data {
15 print!("{i:02X} ");
16 idx += 1;
17 if idx % 16 == 0 {
18 println!()
19 }
20 }
21
22 println!("===========")
23 }
24
25 #[cfg(test)]
26 mod tests {
27
28 #[test]
test_scanf()29 fn test_scanf() {
30 let str_a = "18:23:08";
31
32 if let (Some(a), Some(b), Some(c), _) =
33 scanf!(str_a, |c| c == ':' || c == '.', i64, i64, i64, i64)
34 {
35 println!("a:{a} b:{b} c:{c} ");
36 }
37 }
38 }
39