[−][src]Enum iron::url::Position
Indicates a position within a URL based on its components.
A range of positions can be used for slicing Url
:
let serialization: &str = &some_url[..]; let serialization_without_fragment: &str = &some_url[..Position::AfterQuery]; let authority: &str = &some_url[Position::BeforeUsername..Position::AfterPort]; let data_url_payload: &str = &some_url[Position::BeforePath..Position::AfterQuery]; let scheme_relative: &str = &some_url[Position::BeforeUsername..];
In a pseudo-grammar (where [
…]?
makes a sub-sequence optional),
URL components and delimiters that separate them are:
url =
scheme ":"
[ "//" [ username [ ":" password ]? "@" ]? host [ ":" port ]? ]?
path [ "?" query ]? [ "#" fragment ]?
When a given component is not present,
its "before" and "after" position are the same
(so that &some_url[BeforeFoo..AfterFoo]
is the empty string)
and component ordering is preserved
(so that a missing query "is between" a path and a fragment).
The end of a component and the start of the next are either the same or separate
by a delimiter.
(Not that the initial /
of a path is considered part of the path here, not a delimiter.)
For example, &url[..BeforeFragment]
would include a #
delimiter (if present in url
),
so &url[..AfterQuery]
might be desired instead.
BeforeScheme
and AfterFragment
are always the start and end of the entire URL,
so &url[BeforeScheme..X]
is the same as &url[..X]
and &url[X..AfterFragment]
is the same as &url[X..]
.
Variants
BeforeScheme
AfterScheme
BeforeUsername
AfterUsername
BeforePassword
AfterPassword
BeforeHost
AfterHost
BeforePort
AfterPort
BeforePath
AfterPath
BeforeQuery
AfterQuery
BeforeFragment
AfterFragment
Trait Implementations
Auto Trait Implementations
impl Unpin for Position
impl Sync for Position
impl Send for Position
impl UnwindSafe for Position
impl RefUnwindSafe for Position
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Typeable for T where
T: Any,
T: Any,
impl<T> DebugAny for T where
T: Any + Debug,
[src]
T: Any + Debug,
impl<T> CloneAny for T where
T: Clone + Any,
[src]
T: Clone + Any,
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
[src]
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
[src]
T: Send,
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
[src]
T: Sync,
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Send + Sync> where
T: Send + Sync,
[src]
T: Send + Sync,
impl<T> UnsafeAny for T where
T: Any,
T: Any,