Struct uriparse::uri::URIBuilder
source · [−]pub struct URIBuilder<'uri> { /* private fields */ }
Expand description
A builder type for [URI]
.
You must use the URI::scheme
and URI::path
functions before building as URIs always
have a scheme and path. Everything else is optional.
Implementations
sourceimpl<'uri> URIBuilder<'uri>
impl<'uri> URIBuilder<'uri>
Sets the authority part of the URI.
It is optional to specify a authority.
Examples
use std::convert::TryFrom;
use uriparse::{Authority, Path, Scheme, URIBuilder};
let mut builder = URIBuilder::new();
builder
.scheme(Scheme::HTTP)
.authority(Some(Authority::try_from("example.com").unwrap()))
.path(Path::try_from("/my/path").unwrap());
let reference = builder.build().unwrap();
assert_eq!(reference.to_string(), "http://example.com/my/path");
sourcepub fn build(self) -> Result<URI<'uri>, URIError>
pub fn build(self) -> Result<URI<'uri>, URIError>
Consumes the builder and tries to build a URI
.
This function will error in one of three situations:
- A scheme and path were not specified in the builder.
- While all individual components were valid, their combination as a URI was invalid.
Examples
First error type (scheme and/or path were not specified):
use std::convert::TryFrom;
use uriparse::{Authority, Path, URIBuilder};
let result = URIBuilder::new()
.with_authority(Some(Authority::try_from("example.com").unwrap()))
.with_path(Path::try_from("/my/path").unwrap())
.build();
assert!(result.is_err());
Second error type (URI with no authority cannot have path starting with "//"
):
use std::convert::TryFrom;
use uriparse::{Scheme, Path, URIBuilder};
let result = URIBuilder::new()
.with_scheme(Scheme::URN)
.with_path(Path::try_from("//path").unwrap())
.build();
assert!(result.is_err());
sourcepub fn fragment(&mut self, fragment: Option<Fragment<'uri>>) -> &mut Self
pub fn fragment(&mut self, fragment: Option<Fragment<'uri>>) -> &mut Self
Sets the fragment part of the URI.
It is optional to specify a fragment.
Examples
use std::convert::TryFrom;
use uriparse::{Fragment, Path, Scheme, URIBuilder};
let mut builder = URIBuilder::new();
builder
.scheme(Scheme::URN)
.path(Path::try_from("path").unwrap())
.fragment(Some(Fragment::try_from("fragment").unwrap()));
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path#fragment");
sourcepub fn path(&mut self, path: Path<'uri>) -> &mut Self
pub fn path(&mut self, path: Path<'uri>) -> &mut Self
Sets the path part of the URI.
It is required to specify a path. Not doing so will result in an error during the
URIBuilder::build
function.
Examples
use std::convert::TryFrom;
use uriparse::{Path, Scheme, URIBuilder};
let mut builder = URIBuilder::new();
builder
.scheme(Scheme::URN)
.path(Path::try_from("path").unwrap());
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path");
sourcepub fn query(&mut self, query: Option<Query<'uri>>) -> &mut Self
pub fn query(&mut self, query: Option<Query<'uri>>) -> &mut Self
Sets the query part of the URI reference.
It is optional to specify a query.
Examples
use std::convert::TryFrom;
use uriparse::{Path, Query, Scheme, URIBuilder};
let mut builder = URIBuilder::new();
builder
.scheme(Scheme::URN)
.path(Path::try_from("path").unwrap())
.query(Some(Query::try_from("query").unwrap()));
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path?query");
sourcepub fn scheme(&mut self, scheme: Scheme<'uri>) -> &mut Self
pub fn scheme(&mut self, scheme: Scheme<'uri>) -> &mut Self
Sets the scheme part of the URI reference.
It is required to specify a scheme. Not doing so will result in an error during the
URIBuilder::build
function.
Examples
use std::convert::TryFrom;
use uriparse::{Authority, Path, Scheme, URIBuilder};
let mut builder = URIBuilder::new();
builder
.scheme(Scheme::HTTP)
.authority(Some(Authority::try_from("example.com").unwrap()))
.path(Path::try_from("/my/path").unwrap());
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "http://example.com/my/path");
Sets the authority part of the URI.1
If the given authority is not a valid authority (i.e. the conversion fails), an error is
stored internally and checked during the URIBuilder::build
function. The error state
will be rewritten for any following calls to this function.
It is optional to specify an authority.
Examples
use uriparse::URIBuilder;
let mut builder = URIBuilder::new();
builder
.try_scheme("http")
.unwrap()
.try_authority(Some("example.com"))
.unwrap()
.try_path("/my/path")
.unwrap();
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "http://example.com/my/path");
sourcepub fn try_fragment<TFragment, TFragmentError>(
&mut self,
fragment: Option<TFragment>
) -> Result<&mut Self, FragmentError> where
Fragment<'uri>: TryFrom<TFragment, Error = TFragmentError>,
FragmentError: From<TFragmentError>,
pub fn try_fragment<TFragment, TFragmentError>(
&mut self,
fragment: Option<TFragment>
) -> Result<&mut Self, FragmentError> where
Fragment<'uri>: TryFrom<TFragment, Error = TFragmentError>,
FragmentError: From<TFragmentError>,
Sets the fragment part of the URI.
If the given fragment is not a valid fragment (i.e. the conversion fails), an error is
stored internally and checked during the URIBuilder::build
function. The error state
will be rewritten for any following calls to this function.
It is optional to specify a fragment.
Examples
use uriparse::URIBuilder;
let mut builder = URIBuilder::new();
builder
.try_scheme("urn")
.unwrap()
.try_path("path")
.unwrap()
.try_fragment(Some("fragment"))
.unwrap();
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path#fragment");
sourcepub fn try_path<TPath, TPathError>(
&mut self,
path: TPath
) -> Result<&mut Self, PathError> where
Path<'uri>: TryFrom<TPath, Error = TPathError>,
PathError: From<TPathError>,
pub fn try_path<TPath, TPathError>(
&mut self,
path: TPath
) -> Result<&mut Self, PathError> where
Path<'uri>: TryFrom<TPath, Error = TPathError>,
PathError: From<TPathError>,
Sets the path part of the URI.
If the given path is not a valid path (i.e. the conversion fails), an error is stored
internally and checked during the URIBuilder::build
function. The error state will be
rewritten for any following calls to this function.
It is required to specify a path.
Examples
use uriparse::URIBuilder;
let mut builder = URIBuilder::new();
builder
.try_scheme("urn")
.unwrap()
.try_path("path")
.unwrap();
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path");
sourcepub fn try_query<TQuery, TQueryError>(
&mut self,
query: Option<TQuery>
) -> Result<&mut Self, QueryError> where
Query<'uri>: TryFrom<TQuery, Error = TQueryError>,
QueryError: From<TQueryError>,
pub fn try_query<TQuery, TQueryError>(
&mut self,
query: Option<TQuery>
) -> Result<&mut Self, QueryError> where
Query<'uri>: TryFrom<TQuery, Error = TQueryError>,
QueryError: From<TQueryError>,
Sets the query part of the URI.
If the given query is not a valid query (i.e. the conversion fails), an error is stored
internally and checked during the URIBuilder::build
function. The error state will be
rewritten for any following calls to this function.
It is optional to specify a query.
Examples
use uriparse::URIBuilder;
let mut builder = URIBuilder::new();
builder
.try_scheme("urn")
.unwrap()
.try_path("path")
.unwrap()
.try_query(Some("query"))
.unwrap();
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path?query");
sourcepub fn try_scheme<TScheme, TSchemeError>(
&mut self,
scheme: TScheme
) -> Result<&mut Self, SchemeError> where
Scheme<'uri>: TryFrom<TScheme, Error = TSchemeError>,
SchemeError: From<TSchemeError>,
pub fn try_scheme<TScheme, TSchemeError>(
&mut self,
scheme: TScheme
) -> Result<&mut Self, SchemeError> where
Scheme<'uri>: TryFrom<TScheme, Error = TSchemeError>,
SchemeError: From<TSchemeError>,
Sets the scheme part of the URI.
If the given scheme is not a valid scheme (i.e. the conversion fails), an error is stored
internally and checked during the URIBuilder::build
function. The error state will be
rewritten for any following calls to this function.
It is required to specify a scheme. Not doing so will result in an error during the
URIBuilder::build
function.
Examples
use std::convert::TryFrom;
use uriparse::{Path, Scheme, URIBuilder};
let mut builder = URIBuilder::new();
builder
.try_scheme("urn")
.unwrap()
.try_path("path")
.unwrap();
let uri = builder.build().unwrap();
assert_eq!(uri.to_string(), "urn:path");
Consumes the builder and sets the authority part of the URI.
It is optional to specify an authority.
Examples
use std::convert::TryFrom;
use uriparse::{Authority, Path, Scheme, URIBuilder};
let uri = URIBuilder::new()
.with_scheme(Scheme::HTTP)
.with_authority(Some(Authority::try_from("example.com").unwrap()))
.with_path(Path::try_from("/").unwrap())
.build()
.unwrap();
assert_eq!(uri.to_string(), "http://example.com/")
sourcepub fn with_fragment(self, fragment: Option<Fragment<'uri>>) -> Self
pub fn with_fragment(self, fragment: Option<Fragment<'uri>>) -> Self
Consumes the builder and sets the fragment part of the URI.
It is optional to specify a fragment.
Examples
use std::convert::TryFrom;
use uriparse::{Fragment, Path, Scheme, URIBuilder};
let uri = URIBuilder::new()
.with_scheme(Scheme::URN)
.with_path(Path::try_from("").unwrap())
.with_fragment(Some(Fragment::try_from("fragment").unwrap()))
.build()
.unwrap();
assert_eq!(uri.to_string(), "urn:#fragment")
sourcepub fn with_path(self, path: Path<'uri>) -> Self
pub fn with_path(self, path: Path<'uri>) -> Self
Consumes the builder and sets the path part of the URI.
It is required to specify a path. Not doing so will result in an error during the
URIBuilder::build
function.
Examples
use std::convert::TryFrom;
use uriparse::{Authority, Path, Scheme, URIBuilder};
let reference = URIBuilder::new()
.with_scheme(Scheme::HTTP)
.with_authority(Some(Authority::try_from("example.com").unwrap()))
.with_path(Path::try_from("/").unwrap())
.build()
.unwrap();
assert_eq!(reference.to_string(), "http://example.com/")
sourcepub fn with_query(self, query: Option<Query<'uri>>) -> Self
pub fn with_query(self, query: Option<Query<'uri>>) -> Self
Consumes the builder and sets the query part of the URI.
It is optional to specify a query.
Examples
use std::convert::TryFrom;
use uriparse::{Path, Query, Scheme, URIBuilder};
let uri = URIBuilder::new()
.with_scheme(Scheme::URN)
.with_path(Path::try_from("").unwrap())
.with_query(Some(Query::try_from("query").unwrap()))
.build()
.unwrap();
assert_eq!(uri.to_string(), "urn:?query")
sourcepub fn with_scheme(self, scheme: Scheme<'uri>) -> Self
pub fn with_scheme(self, scheme: Scheme<'uri>) -> Self
Consumes the builder and sets the scheme part of the URI.
It is required to specify a scheme. Not doing so will result in an error during the
URIBuilder::build
function.
Examples
use std::convert::TryFrom;
use uriparse::{Authority, Path, Scheme, URIBuilder};
let reference = URIBuilder::new()
.with_scheme(Scheme::HTTP)
.with_authority(Some(Authority::try_from("example.com").unwrap()))
.with_path(Path::try_from("/").unwrap())
.build()
.unwrap();
assert_eq!(reference.to_string(), "http://example.com/")
Trait Implementations
sourceimpl<'uri> Clone for URIBuilder<'uri>
impl<'uri> Clone for URIBuilder<'uri>
sourcefn clone(&self) -> URIBuilder<'uri>
fn clone(&self) -> URIBuilder<'uri>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl<'uri> Debug for URIBuilder<'uri>
impl<'uri> Debug for URIBuilder<'uri>
sourceimpl<'uri> Default for URIBuilder<'uri>
impl<'uri> Default for URIBuilder<'uri>
sourcefn default() -> URIBuilder<'uri>
fn default() -> URIBuilder<'uri>
Returns the “default value” for a type. Read more
sourceimpl<'uri> PartialEq<URIBuilder<'uri>> for URIBuilder<'uri>
impl<'uri> PartialEq<URIBuilder<'uri>> for URIBuilder<'uri>
sourcefn eq(&self, other: &URIBuilder<'uri>) -> bool
fn eq(&self, other: &URIBuilder<'uri>) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &URIBuilder<'uri>) -> bool
fn ne(&self, other: &URIBuilder<'uri>) -> bool
This method tests for !=
.
impl<'uri> Eq for URIBuilder<'uri>
impl<'uri> StructuralEq for URIBuilder<'uri>
impl<'uri> StructuralPartialEq for URIBuilder<'uri>
Auto Trait Implementations
impl<'uri> RefUnwindSafe for URIBuilder<'uri>
impl<'uri> Send for URIBuilder<'uri>
impl<'uri> Sync for URIBuilder<'uri>
impl<'uri> Unpin for URIBuilder<'uri>
impl<'uri> UnwindSafe for URIBuilder<'uri>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more