Skip to main content

PercentDecodedWhatwgBytes

Struct PercentDecodedWhatwgBytes 

Source
pub struct PercentDecodedWhatwgBytes<'a> { /* private fields */ }
Expand description

A percent-decoded string based on percent-decode algorithm of the WHATWG URL standard.

Note that this type does not guarantee that the string is valid percent-encoded string. The raw string may have stray percent character or the following digits may be invalid as hexadecimal digits.

Note that comparisons and hashing via std traits (such as Eq and Hash) will use the raw value, not the content after decoding.

Implementations§

Source§

impl<'a> PercentDecodedWhatwgBytes<'a>

Source

pub fn not_yet_decoded(&self) -> &'a [u8]

Returns the not-yet-decoded input bytes.

§Examples
use iri_string::percent_encode::decode::decode_whatwg_bytes;

let decoded = decode_whatwg_bytes(b"hello%20world");

assert_eq!(decoded.not_yet_decoded(), &b"hello%20world"[..]);
Source

pub fn to_bytes(&self) -> Option<&'a [u8]>

Returns the decoded bytes as a slice if no memory allocation is needed.

§Examples
use iri_string::percent_encode::decode::decode_whatwg_bytes;

let no_alloc = decode_whatwg_bytes(b"99% unsafe");
assert_eq!(no_alloc.to_bytes(), Some(&b"99% unsafe"[..]));

let alloc_needed = decode_whatwg_bytes(b"hello%20world");
assert_eq!(alloc_needed.to_bytes(), None);
Source

pub fn into_bytes(&self) -> Cow<'a, [u8]>

Available on crate feature alloc only.

Decodes the bytes, based on percent-decode algorithm of the WHATWG URL standard.

§Examples
use iri_string::percent_encode::decode::decode_whatwg_bytes;

let decoded = decode_whatwg_bytes(b"hello%20world");
assert_eq!(decoded.into_bytes(), &b"hello world"[..]);
Source

pub fn into_string(&self) -> Result<String, FromUtf8Error>

Available on crate feature alloc only.

Decodes the bytes into a string, based on percent-decode algorithm of the WHATWG URL standard.

§Examples
use iri_string::percent_encode::decode::decode_whatwg_bytes;

let decoded = decode_whatwg_bytes(b"hello%20world");
assert_eq!(
    decoded.into_string(),
    Ok("hello world".to_owned())
);
Source

pub fn bytes_fragments(&self) -> PercentDecodedBytesFragments<'a>

Returns an iterator of decoded fragments.

§Examples
use iri_string::percent_encode::decode::{
    decode_whatwg_bytes, DecodedFragment,
};

let mut i = decode_whatwg_bytes(b"100% hello%20world")
    .bytes_fragments();

assert_eq!(i.next(), Some(DecodedFragment::Direct(b"100")));
assert_eq!(i.next(), Some(DecodedFragment::StrayPercent));
assert_eq!(i.next(), Some(DecodedFragment::Direct(b" hello")));
assert_eq!(i.next(), Some(DecodedFragment::DecodedByte(b' ')));
assert_eq!(i.next(), Some(DecodedFragment::Direct(b"world")));
assert_eq!(i.next(), None);

Trait Implementations§

Source§

impl<'a> Clone for PercentDecodedWhatwgBytes<'a>

Source§

fn clone(&self) -> PercentDecodedWhatwgBytes<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PercentDecodedWhatwgBytes<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Hash for PercentDecodedWhatwgBytes<'a>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<'a> Ord for PercentDecodedWhatwgBytes<'a>

Source§

fn cmp(&self, other: &PercentDecodedWhatwgBytes<'a>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<'a> PartialEq for PercentDecodedWhatwgBytes<'a>

Source§

fn eq(&self, other: &PercentDecodedWhatwgBytes<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> PartialOrd for PercentDecodedWhatwgBytes<'a>

Source§

fn partial_cmp(&self, other: &PercentDecodedWhatwgBytes<'a>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<'a> Copy for PercentDecodedWhatwgBytes<'a>

Source§

impl<'a> Eq for PercentDecodedWhatwgBytes<'a>

Source§

impl<'a> StructuralPartialEq for PercentDecodedWhatwgBytes<'a>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.