Coverage Report

Created: 2025-07-18 06:13

/rust/registry/src/index.crates.io-6f17d22bba15001f/httparse-1.10.1/src/macros.rs
Line
Count
Source (jump to first uncovered line)
1
//! Utility macros
2
3
macro_rules! next {
4
    ($bytes:ident) => ({
5
        match $bytes.next() {
6
            Some(b) => b,
7
            None => return Ok(Status::Partial)
8
        }
9
    })
10
}
11
12
macro_rules! expect {
13
    ($bytes:ident.next() == $pat:pat => $ret:expr) => {
14
        expect!(next!($bytes) => $pat |? $ret)
15
    };
16
    ($e:expr => $pat:pat |? $ret:expr) => {
17
        match $e {
18
            v@$pat => v,
19
            _ => return $ret
20
        }
21
    };
22
}
23
24
macro_rules! complete {
25
    ($e:expr) => {
26
        match $e? {
27
            Status::Complete(v) => v,
28
            Status::Partial => return Ok(Status::Partial)
29
        }
30
    }
31
}
32
33
macro_rules! byte_map {
34
    ($($p:pat)|+) => {{
35
0
        const fn make_map() -> [bool; 256] {
36
0
            let mut ret = [false; 256];
37
0
            let mut i = 0;
38
0
            while i < 256 {
39
0
                ret[i] = matches!(i as u8, $($p)|+);
40
0
                i += 1;
41
            }
42
0
            ret
43
0
        }
Unexecuted instantiation: httparse::URI_MAP::make_map
Unexecuted instantiation: httparse::TOKEN_MAP::make_map
Unexecuted instantiation: httparse::HEADER_VALUE_MAP::make_map
44
        make_map()
45
    }}
46
}
47
48
macro_rules! space {
49
    ($bytes:ident or $err:expr) => ({
50
        expect!($bytes.next() == b' ' => Err($err));
51
        $bytes.slice();
52
    })
53
}
54
55
macro_rules! newline {
56
    ($bytes:ident) => ({
57
        match next!($bytes) {
58
            b'\r' => {
59
                expect!($bytes.next() == b'\n' => Err(Error::NewLine));
60
                $bytes.slice();
61
            },
62
            b'\n' => {
63
                $bytes.slice();
64
            },
65
            _ => return Err(Error::NewLine)
66
        }
67
    })
68
}