matchit

Struct Router

Source
pub struct Router<T> { /* private fields */ }
Expand description

A zero-copy URL router.

See the crate documentation for details.

Implementations§

Source§

impl<T> Router<T>

Source

pub fn new() -> Self

Construct a new router.

Source

pub fn insert( &mut self, route: impl Into<String>, value: T, ) -> Result<(), InsertError>

Insert a route into the router.

§Examples
let mut router = Router::new();
router.insert("/home", "Welcome!")?;
router.insert("/users/{id}", "A User")?;
Source

pub fn at<'path>( &self, path: &'path str, ) -> Result<Match<'_, 'path, &T>, MatchError>

Tries to find a value in the router matching the given path.

§Examples
let mut router = Router::new();
router.insert("/home", "Welcome!")?;

let matched = router.at("/home").unwrap();
assert_eq!(*matched.value, "Welcome!");
Source

pub fn at_mut<'path>( &mut self, path: &'path str, ) -> Result<Match<'_, 'path, &mut T>, MatchError>

Tries to find a value in the router matching the given path, returning a mutable reference.

§Examples
let mut router = Router::new();
router.insert("/", 1)?;

*router.at_mut("/").unwrap().value += 1;
assert_eq!(*router.at("/").unwrap().value, 2);
Source

pub fn remove(&mut self, path: impl Into<String>) -> Option<T>

Remove a given route from the router.

Returns the value stored under the route if it was found. If the route was not found or invalid, None is returned.

§Examples
let mut router = Router::new();

router.insert("/home", "Welcome!");
assert_eq!(router.remove("/home"), Some("Welcome!"));
assert_eq!(router.remove("/home"), None);

router.insert("/home/{id}/", "Hello!");
assert_eq!(router.remove("/home/{id}/"), Some("Hello!"));
assert_eq!(router.remove("/home/{id}/"), None);

router.insert("/home/{id}/", "Hello!");
// the route does not match
assert_eq!(router.remove("/home/{user}"), None);
assert_eq!(router.remove("/home/{id}/"), Some("Hello!"));

router.insert("/home/{id}/", "Hello!");
// invalid route
assert_eq!(router.remove("/home/{id"), None);
assert_eq!(router.remove("/home/{id}/"), Some("Hello!"));

Trait Implementations§

Source§

impl<T: Clone> Clone for Router<T>

Source§

fn clone(&self) -> Router<T>

Returns a copy 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<T: Debug> Debug for Router<T>

Source§

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

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

impl<T> Default for Router<T>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> !Freeze for Router<T>

§

impl<T> !RefUnwindSafe for Router<T>

§

impl<T> Send for Router<T>
where T: Send,

§

impl<T> Sync for Router<T>
where T: Sync,

§

impl<T> Unpin for Router<T>
where T: Unpin,

§

impl<T> UnwindSafe for Router<T>
where T: UnwindSafe,

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.