pub struct PercentEncoded<T, S> { /* private fields */ }
Expand description
A proxy to percent-encode a string.
Type aliases PercentEncodedForIri
and PercentEncodedForUri
are provided.
You can use them to make the expression simpler, for example write
PercentEncodedForUri::from_path(foo)
instead of
PercentEncoded::<_, UriSpec>::from_path(foo)
.
Implementations§
source§impl<T: Display, S: Spec> PercentEncoded<T, S>
impl<T: Display, S: Spec> PercentEncoded<T, S>
sourcepub fn from_reg_name(raw: T) -> Self
pub fn from_reg_name(raw: T) -> Self
Creates an encoded string from a raw reg-name (i.e. hostname or domain).
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "alpha.\u{03B1}.example.com";
let encoded = "alpha.%CE%B1.example.com";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_reg_name(raw).to_string(),
encoded
);
sourcepub fn from_user(raw: T) -> Self
pub fn from_user(raw: T) -> Self
Creates an encoded string from a raw user name (inside userinfo
component).
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "user:\u{03B1}";
// The first `:` will be interpreted as a delimiter, so colons will be escaped.
let encoded = "user%3A%CE%B1";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_user(raw).to_string(),
encoded
);
sourcepub fn from_password(raw: T) -> Self
pub fn from_password(raw: T) -> Self
Creates an encoded string from a raw user name (inside userinfo
component).
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "password:\u{03B1}";
// The first `:` will be interpreted as a delimiter, and the colon
// inside the password will be the first one if the user name is empty,
// so colons will be escaped.
let encoded = "password%3A%CE%B1";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_password(raw).to_string(),
encoded
);
sourcepub fn from_path_segment(raw: T) -> Self
pub fn from_path_segment(raw: T) -> Self
Creates an encoded string from a raw path segment.
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "alpha/\u{03B1}?#";
// Note that `/` is encoded to `%2F`.
let encoded = "alpha%2F%CE%B1%3F%23";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_path_segment(raw).to_string(),
encoded
);
sourcepub fn from_path(raw: T) -> Self
pub fn from_path(raw: T) -> Self
Creates an encoded string from a raw path.
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "alpha/\u{03B1}?#";
// Note that `/` is NOT percent encoded.
let encoded = "alpha/%CE%B1%3F%23";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_path(raw).to_string(),
encoded
);
sourcepub fn from_query(raw: T) -> Self
pub fn from_query(raw: T) -> Self
Creates an encoded string from a raw query.
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "alpha/\u{03B1}?#";
let encoded = "alpha/%CE%B1?%23";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_query(raw).to_string(),
encoded
);
sourcepub fn from_fragment(raw: T) -> Self
pub fn from_fragment(raw: T) -> Self
Creates an encoded string from a raw fragment.
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let raw = "alpha/\u{03B1}?#";
let encoded = "alpha/%CE%B1?%23";
assert_eq!(
PercentEncoded::<_, UriSpec>::from_fragment(raw).to_string(),
encoded
);
sourcepub fn unreserve(raw: T) -> Self
pub fn unreserve(raw: T) -> Self
Creates a string consists of only unreserved
string and percent-encoded triplets.
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let unreserved = "%a0-._~\u{03B1}";
let unreserved_encoded = "%25a0-._~%CE%B1";
assert_eq!(
PercentEncoded::<_, UriSpec>::unreserve(unreserved).to_string(),
unreserved_encoded
);
let reserved = ":/?#[]@ !$&'()*+,;=";
let reserved_encoded =
"%3A%2F%3F%23%5B%5D%40%20%21%24%26%27%28%29%2A%2B%2C%3B%3D";
assert_eq!(
PercentEncoded::<_, UriSpec>::unreserve(reserved).to_string(),
reserved_encoded
);
sourcepub fn characters(raw: T) -> Self
pub fn characters(raw: T) -> Self
Percent-encodes characters only if they cannot appear anywhere in an IRI reference.
%
character will be always encoded. In other words, this conversion
is not aware of percent-encoded triplets.
Note that this encoding process does not guarantee that the resulting string is a valid IRI reference.
§Examples
use iri_string::percent_encode::PercentEncoded;
use iri_string::spec::UriSpec;
let unreserved = "%a0-._~\u{03B1}";
let unreserved_encoded = "%25a0-._~%CE%B1";
assert_eq!(
PercentEncoded::<_, UriSpec>::characters(unreserved).to_string(),
unreserved_encoded
);
let reserved = ":/?#[]@ !$&'()*+,;=";
// Note that `%20` cannot appear directly in an IRI reference.
let expected = ":/?#[]@%20!$&'()*+,;=";
assert_eq!(
PercentEncoded::<_, UriSpec>::characters(reserved).to_string(),
expected
);
Trait Implementations§
source§impl<T: Clone, S: Clone> Clone for PercentEncoded<T, S>
impl<T: Clone, S: Clone> Clone for PercentEncoded<T, S>
source§fn clone(&self) -> PercentEncoded<T, S>
fn clone(&self) -> PercentEncoded<T, S>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreimpl<T: Copy, S: Copy> Copy for PercentEncoded<T, S>
Auto Trait Implementations§
impl<T, S> Freeze for PercentEncoded<T, S>where
T: Freeze,
impl<T, S> RefUnwindSafe for PercentEncoded<T, S>where
T: RefUnwindSafe,
impl<T, S> Send for PercentEncoded<T, S>where
T: Send,
impl<T, S> Sync for PercentEncoded<T, S>where
T: Sync,
impl<T, S> Unpin for PercentEncoded<T, S>where
T: Unpin,
impl<T, S> UnwindSafe for PercentEncoded<T, S>where
T: UnwindSafe,
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
source§fn try_to_string(&self) -> Result<String, TryReserveError>
Available on crate feature alloc
only.
fn try_to_string(&self) -> Result<String, TryReserveError>
alloc
only.ToString::to_string
, but without panic on OOM.