1#[inline]
9pub(crate) const fn is_a_key_leading_char(ch: u8) -> bool {
10 ch.is_ascii_lowercase() || ch == b'_'
11}
12
13#[inline]
15pub(crate) const fn is_a_key_char(ch: u8) -> bool {
16 is_a_key_leading_char(ch) || ch.is_ascii_digit() || ch == b'-'
17}
18
19pub(crate) const fn is_annotation_value_component(ch: u8) -> bool {
21 ch.is_ascii_digit() || ch.is_ascii_alphabetic()
22}
23
24#[inline]
26pub(crate) const fn is_tz_leading_char(ch: u8) -> bool {
27 ch.is_ascii_alphabetic() || ch == b'_' || ch == b'.'
28}
29
30#[inline]
32pub(crate) const fn is_tz_char(ch: u8) -> bool {
33 is_tz_leading_char(ch) || ch.is_ascii_digit() || ch == b'-' || ch == b'+'
34}
35
36#[inline]
38pub(crate) const fn is_tz_name_separator(ch: u8) -> bool {
39 ch == b'/'
40}
41
42#[inline]
44pub(crate) const fn is_ascii_sign(ch: u8) -> bool {
45 ch == b'+' || ch == b'-'
46}
47
48#[inline]
50pub(crate) const fn is_time_separator(ch: u8) -> bool {
51 ch == b':'
52}
53
54#[inline]
56pub(crate) const fn is_time_designator(ch: u8) -> bool {
57 ch == b'T' || ch == b't'
58}
59
60#[inline]
61pub(crate) const fn is_space(ch: u8) -> bool {
63 ch == b' '
64}
65
66#[inline]
68pub(crate) const fn is_date_time_separator(ch: u8) -> bool {
69 is_time_designator(ch) || is_space(ch)
70}
71
72#[inline]
74pub(crate) const fn is_utc_designator(ch: u8) -> bool {
75 ch == b'Z' || ch == b'z'
76}
77
78#[inline]
80#[cfg(feature = "duration")]
81pub(crate) const fn is_duration_designator(ch: u8) -> bool {
82 ch == b'P' || ch == b'p'
83}
84
85#[inline]
87#[cfg(feature = "duration")]
88pub(crate) const fn is_year_designator(ch: u8) -> bool {
89 ch == b'Y' || ch == b'y'
90}
91
92#[inline]
94#[cfg(feature = "duration")]
95pub(crate) const fn is_month_designator(ch: u8) -> bool {
96 ch == b'M' || ch == b'm'
97}
98
99#[inline]
101#[cfg(feature = "duration")]
102pub(crate) const fn is_week_designator(ch: u8) -> bool {
103 ch == b'W' || ch == b'w'
104}
105
106#[inline]
108#[cfg(feature = "duration")]
109pub(crate) const fn is_day_designator(ch: u8) -> bool {
110 ch == b'D' || ch == b'd'
111}
112
113#[inline]
115#[cfg(feature = "duration")]
116pub(crate) const fn is_hour_designator(ch: u8) -> bool {
117 ch == b'H' || ch == b'h'
118}
119
120#[inline]
122#[cfg(feature = "duration")]
123pub(crate) const fn is_minute_designator(ch: u8) -> bool {
124 is_month_designator(ch)
125}
126
127#[inline]
129#[cfg(feature = "duration")]
130pub(crate) const fn is_second_designator(ch: u8) -> bool {
131 ch == b'S' || ch == b's'
132}
133
134#[inline]
136pub(crate) const fn is_decimal_separator(ch: u8) -> bool {
137 ch == b'.' || ch == b','
138}
139
140#[inline]
142pub(crate) const fn is_annotation_open(ch: u8) -> bool {
143 ch == b'['
144}
145
146#[inline]
148pub(crate) const fn is_annotation_close(ch: u8) -> bool {
149 ch == b']'
150}
151
152#[inline]
154pub(crate) const fn is_critical_flag(ch: u8) -> bool {
155 ch == b'!'
156}
157
158#[inline]
160pub(crate) const fn is_annotation_key_value_separator(ch: u8) -> bool {
161 ch == b'='
162}
163
164#[inline]
167pub(crate) const fn is_hyphen(ch: u8) -> bool {
168 ch == b'-'
169}