xref: /xiu/protocol/rtsp/src/rtsp_utils.rs (revision b36cf5da)
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