pub enum Word<'a> {
Token(&'a [u8]),
Quoted(Quoted<'a>),
}Expand description
token / quoted-string: the value form of parameters and directives.
A token and a quoted string with the same content compare equal, as
RFC 9110 section 5.6.6 requires: eq_bytes and
eq_ignore_ascii_case compare unescaped
content. The derived PartialEq compares the forms structurally.
§Examples
use parse_net::text;
let (a, _) = text::parse_word(b"utf-8")?;
let (b, _) = text::parse_word(b"\"UTF-8\"")?;
assert!(a.eq_ignore_ascii_case(b"UTF-8") && b.eq_ignore_ascii_case(b"utf-8"));
assert_eq!(b.as_str(), Some("UTF-8"));Variants§
Implementations§
Source§impl<'a> Word<'a>
impl<'a> Word<'a>
Sourcepub const fn as_plain(&self) -> Option<&'a [u8]>
pub const fn as_plain(&self) -> Option<&'a [u8]>
The token, or the quoted content when it has no quoted pair.
§Examples
use parse_net::text::parse_word;
assert_eq!(parse_word(b"gzip")?.0.as_plain(), Some(&b"gzip"[..]));
assert_eq!(parse_word(b"\"a\\\"b\"")?.0.as_plain(), None);Sourcepub fn eq_bytes(&self, other: &[u8]) -> bool
pub fn eq_bytes(&self, other: &[u8]) -> bool
Whether the unescaped value equals other.
§Examples
use parse_net::text::parse_word;
assert!(parse_word(b"\"a b\"")?.0.eq_bytes(b"a b"));
assert!(parse_word(b"gzip")?.0.eq_bytes(b"gzip") && !parse_word(b"gzip")?.0.eq_bytes(b"GZIP"));Sourcepub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool
pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool
Whether the unescaped value equals other ignoring ASCII case.
§Examples
use parse_net::text::parse_word;
assert!(parse_word(b"GZIP")?.0.eq_ignore_ascii_case(b"gzip"));
assert!(parse_word(b"\"Br\"")?.0.eq_ignore_ascii_case(b"br"));Sourcepub fn unescape_into<'b>(
&self,
out: &'b mut [u8],
) -> Result<&'b [u8], ParseError>
pub fn unescape_into<'b>( &self, out: &'b mut [u8], ) -> Result<&'b [u8], ParseError>
Writes the unescaped value into out and returns the written part.
§Errors
ErrorKind::BufferTooSmall; nothing is written.
§Examples
use parse_net::{text::parse_word, ErrorKind};
let (w, _) = parse_word(b"\"a\\\"b\"")?;
let mut buf = [0u8; 8];
assert_eq!(w.unescape_into(&mut buf)?, b"a\"b");
assert_eq!(w.unescape_into(&mut [0u8; 2]).unwrap_err().kind(), ErrorKind::BufferTooSmall);Trait Implementations§
impl<'a> Copy for Word<'a>
impl<'a> Eq for Word<'a>
impl<'a> StructuralPartialEq for Word<'a>
Auto Trait Implementations§
impl<'a> Freeze for Word<'a>
impl<'a> RefUnwindSafe for Word<'a>
impl<'a> Send for Word<'a>
impl<'a> Sync for Word<'a>
impl<'a> Unpin for Word<'a>
impl<'a> UnsafeUnpin for Word<'a>
impl<'a> UnwindSafe for Word<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more