pub struct Class(/* private fields */);Expand description
A set of byte classes, for all and the scanning functions.
The named constants are the classes of dev/PLAN.md section 7.1.
§Examples
use parse_net::class::Class;
let host_chars = Class::UNRESERVED.union(Class::SUB_DELIM);
assert!(host_chars.contains(b'!') && !host_chars.contains(b'/'));Implementations§
Source§impl Class
impl Class
Sourcepub const TCHAR: Self
pub const TCHAR: Self
tchar (RFC 9110 section 5.6.2).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"no-cache", Class::TCHAR) && !Class::TCHAR.contains(b'('));Sourcepub const VCHAR: Self
pub const VCHAR: Self
VCHAR: 0x21 to 0x7E (RFC 5234).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"a=b;c", Class::VCHAR) && !Class::VCHAR.contains(b' '));Sourcepub const OBS_TEXT: Self
pub const OBS_TEXT: Self
obs-text: 0x80 to 0xFF (RFC 9110 section 5.5).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"\xc3\xa9", Class::OBS_TEXT) && !Class::OBS_TEXT.contains(b'a'));Sourcepub const FIELD_TEXT: Self
pub const FIELD_TEXT: Self
field-vchar / SP / HTAB (RFC 9110 section 5.5).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"text/html; q=0.9\t", Class::FIELD_TEXT));
assert!(!Class::FIELD_TEXT.contains(b'\r'));Sourcepub const QDTEXT: Self
pub const QDTEXT: Self
qdtext (RFC 9110 section 5.6.4).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"a b,c", Class::QDTEXT));
assert!(!Class::QDTEXT.contains(b'"') && !Class::QDTEXT.contains(b'\\'));Sourcepub const CTEXT: Self
pub const CTEXT: Self
ctext (RFC 9110 section 5.6.5).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"compatible; MSIE", Class::CTEXT) && !Class::CTEXT.contains(b'('));Sourcepub const QUOTED_PAIR: Self
pub const QUOTED_PAIR: Self
The byte after \ in a quoted-pair: HTAB / SP / VCHAR / obs-text.
§Examples
use parse_net::class::Class;
assert!(Class::QUOTED_PAIR.contains(b'"') && Class::QUOTED_PAIR.contains(b'\t'));
assert!(!Class::QUOTED_PAIR.contains(0x7f));Sourcepub const ETAGC: Self
pub const ETAGC: Self
etagc (RFC 9110 section 8.8.3).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"W/xyz", Class::ETAGC) && !Class::ETAGC.contains(b'"'));Sourcepub const ATTR_CHAR: Self
pub const ATTR_CHAR: Self
attr-char (RFC 8187 section 3.2.1).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"utf-8", Class::ATTR_CHAR));
assert!(!Class::ATTR_CHAR.contains(b'%') && !Class::ATTR_CHAR.contains(b'\''));Sourcepub const MIME_TOKEN: Self
pub const MIME_TOKEN: Self
The MIME token characters (RFC 2045 section 5.1); unlike tchar,
they include { and }.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"{x}", Class::MIME_TOKEN) && !all(b"{x}", Class::TCHAR));
assert!(!Class::MIME_TOKEN.contains(b'/'));Sourcepub const UNRESERVED: Self
pub const UNRESERVED: Self
unreserved (RFC 3986 section 2.3).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"a-b_c.d~", Class::UNRESERVED) && !Class::UNRESERVED.contains(b'!'));Sourcepub const SUB_DELIM: Self
pub const SUB_DELIM: Self
sub-delims (RFC 3986 section 2.2).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"!$&'()*+,;=", Class::SUB_DELIM) && !Class::SUB_DELIM.contains(b'/'));Sourcepub const PCHAR_NO_PCT: Self
pub const PCHAR_NO_PCT: Self
unreserved / sub-delims / ":" / "@": pchar without pct-encoded.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"user:pass@host", Class::PCHAR_NO_PCT));
assert!(!Class::PCHAR_NO_PCT.contains(b'/') && !Class::PCHAR_NO_PCT.contains(b'%'));Sourcepub const URI_TARGET: Self
pub const URI_TARGET: Self
pchar / "/" / "?" plus %: the characters of a request target.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"/a%20b?q=1", Class::URI_TARGET) && !Class::URI_TARGET.contains(b'#'));Sourcepub const HEXDIG: Self
pub const HEXDIG: Self
HEXDIG, either case.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"0aF9", Class::HEXDIG) && !Class::HEXDIG.contains(b'g'));Sourcepub const SF_KEY_START: Self
pub const SF_KEY_START: Self
The first byte of a Structured Field key: lcalpha / "*".
§Examples
use parse_net::class::Class;
assert!(Class::SF_KEY_START.contains(b'*') && Class::SF_KEY_START.contains(b'a'));
assert!(!Class::SF_KEY_START.contains(b'_') && !Class::SF_KEY_START.contains(b'0'));Sourcepub const SF_KEY: Self
pub const SF_KEY: Self
A Structured Field key byte: lcalpha / DIGIT / "_" / "-" / "." / "*".
§Examples
use parse_net::class::{all, Class};
assert!(all(b"max-age_2.*", Class::SF_KEY) && !Class::SF_KEY.contains(b'A'));Sourcepub const SF_TOKEN: Self
pub const SF_TOKEN: Self
A Structured Field token byte after the first: tchar / ":" / "/".
§Examples
use parse_net::class::{all, Class};
assert!(all(b"text/html:x", Class::SF_TOKEN) && !Class::SF_TOKEN.contains(b'"'));Sourcepub const SF_STRING: Self
pub const SF_STRING: Self
An unescaped Structured Field string byte: %x20-21 / %x23-5B / %x5D-7E.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"hello world!", Class::SF_STRING));
assert!(!Class::SF_STRING.contains(b'\\') && !Class::SF_STRING.contains(b'"'));Sourcepub const TOKEN68: Self
pub const TOKEN68: Self
A token68 byte (RFC 9110 section 11.2), without the = padding.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"abc-._~+/", Class::TOKEN68) && !Class::TOKEN68.contains(b'='));Sourcepub const BASE64: Self
pub const BASE64: Self
The base64 alphabet (RFC 4648 section 4), without the = padding.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"aGk+/w", Class::BASE64));
assert!(!Class::BASE64.contains(b'=') && !Class::BASE64.contains(b'-'));Sourcepub const ATEXT: Self
pub const ATEXT: Self
atext (RFC 5322 section 3.2.3).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"user+tag", Class::ATEXT) && !Class::ATEXT.contains(b'@'));Sourcepub const BCHAR_NOSPACE: Self
pub const BCHAR_NOSPACE: Self
bcharsnospace (RFC 2046 section 5.1.1).
§Examples
use parse_net::class::{all, Class};
assert!(all(b"----=_Part_0", Class::BCHAR_NOSPACE) && !Class::BCHAR_NOSPACE.contains(b' '));Sourcepub const COOKIE_OCTET: Self
pub const COOKIE_OCTET: Self
cookie-octet (rfc6265bis section 4.1.1), for cookie-net.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"abc123!", Class::COOKIE_OCTET));
assert!(!Class::COOKIE_OCTET.contains(b';') && !Class::COOKIE_OCTET.contains(b','));Sourcepub const AV_OCTET: Self
pub const AV_OCTET: Self
Cookie attribute value bytes (rfc6265bis section 4.1.1), for cookie-net.
§Examples
use parse_net::class::{all, Class};
assert!(all(b"Mon, 01 Jan", Class::AV_OCTET) && !Class::AV_OCTET.contains(b';'));