Skip to main content

ClientRouter

Struct ClientRouter 

Source
pub struct ClientRouter { /* private fields */ }
Available on crate feature client-router only.
Expand description

The main client-side router.

ClientRouter renders views using the Page type.

§Clone semantics

The Clone impl is shallow by design. Signal fields share their underlying reactive state across clones, and on WASM the navigation observer state (held behind Rc) is shared as well; only the route table (Vec<ClientRoute> / HashMap<String, usize>) is copied independently. As a result two clones see the same navigation state but can diverge if either is mutated to register new routes — this is not a deep clone of the router.

In practice Clone is only invoked by collect_client_router_from_inventory (Refs #4453) as the fallback path for Arc::try_unwrap when the underlying factory Arc is shared, and ClientLauncher::register_routes_from_inventory() is the only caller. Application code should NOT call .clone() directly to “branch” routers; treat the router as a single owned value moved into the launcher. Refs Copilot review on PR #4477.

Implementations§

Source§

impl ClientRouter

Source

pub fn new() -> ClientRouter

Available on crate feature pages only.

Creates a new router.

Source

pub fn merge(self, other: ClientRouter) -> ClientRouter

Available on crate feature pages only.

Combine another ClientRouter into this one.

Routes and named-route mappings from other are appended to self, preserving the order in which routes were originally registered. The reactive signals (current_path, current_params, current_route_name) and the not_found handler from other are discarded — self’s observation state is the one that drives the merged router.

§Named-route collisions

If both routers register the same named route, the entry from other overwrites the entry from self (last-wins). This matches the way UnifiedRouter::mount_unified already composes per-app routers, and keeps merge callable in chains where the caller does not want to handle errors. Use ClientRouter::try_merge for a fallible variant that surfaces collisions instead of silently shadowing them.

§Examples

Composing per-app SPA routers into the single ClientRouter that ClientLauncher::router_client expects:

let router = polls_client_url_patterns()
    .merge(users_client_url_patterns());
Source

pub fn try_merge(self, other: ClientRouter) -> Result<ClientRouter, MergeError>

Available on crate feature pages only.

Like ClientRouter::merge, but fail if any named route collides.

Validates first, so on Err self is dropped without being mutated. On success the semantics are identical to merge (routes appended, other’s signals and not_found discarded).

§Errors

Returns MergeError::NameCollision carrying a colliding name when at least one named route is registered in both routers. When several names collide, the returned name is one of them; the choice is unspecified because named routes are stored in a HashMap.

§Examples
match polls_client_url_patterns().try_merge(users_client_url_patterns()) {
    Ok(router) => launcher.router_client(|| router),
    Err(MergeError::NameCollision { name }) => {
        panic!("two apps register the route `{name}`");
    }
}
Source

pub fn with_namespace(self, namespace: &str) -> ClientRouter

Available on crate feature pages only.

Prefix all named route keys with "namespace:".

This is the client-side equivalent of ServerRouter::with_namespace(). Called by client/unified route declarations to ensure registered names match the "app:route" format used by per-app resolver structs.

Source

pub fn with_route_metadata( self, name: &str, metadata: RouteMetadata, ) -> ClientRouter

Available on crate feature pages only.

Adds metadata to an already-registered named route.

§Panics

Panics if name is not registered.

Source

pub fn route<F>(self, name: &str, pattern: &str, component: F) -> ClientRouter
where F: Fn() -> Page + Send + Sync + 'static,

Available on crate feature pages only.

Adds a named route to the router.

Every route requires a unique name for reverse URL lookup.

§Panics

Panics if name duplicates an already-registered route name.

Source

pub fn route_params<F, T>( self, name: &str, pattern: &str, handler: F, ) -> ClientRouter
where F: Fn(Path<T>) -> Page + Send + Sync + 'static, T: FromPath + Send + Sync + 'static,

Available on crate feature pages only.

Adds a named route with typed path parameters.

§Panics

Panics if name duplicates an already-registered route name.

Source

pub fn route_result<F, T, E>( self, name: &str, pattern: &str, handler: F, ) -> ClientRouter
where F: Fn(Path<T>) -> Result<Page, E> + Send + Sync + 'static, T: FromPath + Send + Sync + 'static, E: Into<RouterError> + Send + Sync + 'static,

Available on crate feature pages only.

Adds a named route with typed path parameters that returns a Result.

§Panics

Panics if name duplicates an already-registered route name.

Source

pub fn page<F, P>(self, name: &str, pattern: &str, handler: F) -> ClientRouter
where F: Fn(P) -> Page + Send + Sync + 'static, P: FromRequest + Send + Sync + 'static,

Available on crate feature pages only.

Adds a named route whose handler receives a single Props struct constructed via FromRequest (Manouche DSL v2 spec §4.3).

This is the canonical v2 route-handler shape: the same Props struct can be used both as a Component (passed via the Component { ... } invocation syntax) and as a page function (registered here). Path / query extraction errors surface as a Page::Text describing the failure rather than panicking.

§Example
use reinhardt_urls::routers::ClientRouter;
use reinhardt_urls::routers::client_router::from_request::{
    ExtractError, FromRequest, PathParam, RouteContext,
};

struct UserPageProps { id: PathParam<i32> }

impl FromRequest for UserPageProps {
    fn from_request(ctx: &RouteContext) -> Result<Self, ExtractError> {
        Ok(Self { id: PathParam::extract(ctx, "id")? })
    }
}

fn user_page(props: UserPageProps) -> reinhardt_core::types::page::Page {
    reinhardt_core::types::page::Page::Text(
        format!("user {}", props.id.into_inner()).into(),
    )
}

let router = ClientRouter::new().page("user", "/users/{id}/", user_page);
§Panics

Panics if the pattern is invalid (exceeds length/segment limits or invalid regex). Use ClientPathPattern::new directly for fallible construction. Also panics if name duplicates an already-registered route name.

Source

pub fn component<F, P>(self, handler: F) -> ClientRouter
where F: Fn(P) -> Page + Send + Sync + 'static, P: FromRequest + ComponentInfo + Send + Sync + 'static,

Available on crate feature pages only.

Adds a named route from metadata generated by #[component].

This mirrors the server-side endpoint registration style: the handler function supplies the props type, and the props type supplies route metadata through ComponentInfo.

§Example
use reinhardt_pages::{Page, Path, component, page};
use reinhardt_urls::routers::ClientRouter;

#[component("/users/{id}/", "user-detail")]
fn user_page(Path(id): Path<i64>) -> Page {
    page!(|id: i64| { div { { id.to_string() } } })(id)
}

let router = ClientRouter::new().component(user_page);
Source

pub fn guarded_route<F, G>( self, pattern: &str, component: F, guard: G, ) -> ClientRouter
where F: Fn() -> Page + Send + Sync + 'static, G: Fn(&ClientRouteMatch) -> bool + Send + Sync + 'static,

Available on crate feature pages only.

Adds a route with a guard.

Source

pub fn route_path<H, Args>( self, name: &str, pattern: &str, handler: H, ) -> ClientRouter
where H: Handler<Args>,

Available on crate feature pages only.

Adds a named route with one to eight path parameters using Path<T> extractors.

The handler closure may take any number of Path<T> arguments from 1 to 8. The compiler infers the arity from the closure signature via the sealed Handler<Args> trait, so the same method name covers every supported arity. Refs Issue #4637.

§Examples
// One path parameter
let router = ClientRouter::new()
    .route_path("user_detail", "/users/{id}/", |Path(id): Path<i64>| user_detail(id));

// Two path parameters
let router = router.route_path(
    "user_post_detail",
    "/users/{user_id}/posts/{post_id}/",
    |Path(user_id): Path<i64>, Path(post_id): Path<i64>| {
        user_post_detail(user_id, post_id)
    },
);

// Three path parameters
let router = router.route_path(
    "issue_detail",
    "/org/{org}/repos/{repo}/issues/{issue}/",
    |Path(org): Path<String>, Path(repo): Path<String>, Path(issue): Path<i32>| {
        issue_detail(org, repo, issue)
    },
);
§Panics

Panics if the pattern is invalid or if name duplicates an already-registered route name.

Source

pub fn not_found<F>(self, component: F) -> ClientRouter
where F: Fn() -> Page + Send + Sync + 'static,

Available on crate feature pages only.

Sets the not found handler.

Source

pub fn current_path(&self) -> &Signal<String>

Available on crate feature pages only.

Returns the current path signal.

Source

pub fn current_params(&self) -> &Signal<HashMap<String, String>>

Available on crate feature pages only.

Returns the current params signal.

Source

pub fn current_route_name(&self) -> &Signal<Option<String>>

Available on crate feature pages only.

Returns the current route name signal.

Source

pub fn route_patterns(&self) -> impl Iterator<Item = (&str, Option<&str>)>

Available on crate feature pages only.

Returns an iterator over registered route patterns and their optional names.

Each item is (pattern_str, name) where name is Some for named routes. Intended for diagnostic output (e.g., the runserver startup banner).

Source

pub fn match_path(&self, path: &str) -> Option<ClientRouteMatch>

Available on crate feature pages only.

Matches a path against registered routes.

Strips an optional ?query suffix before matching and stores the captured query (without the leading ?) on ClientRouteMatch::query. Patterns therefore match against the path portion only; the query is delivered to handlers via the match struct (used by ClientRouter::page / QueryParam).

Source

pub fn push(&self, path: &str) -> Result<(), RouterError>

Available on crate feature pages only.

Navigates to a path using pushState.

Source

pub fn replace(&self, path: &str) -> Result<(), RouterError>

Available on crate feature pages only.

Navigates to a path using replaceState.

Source

pub fn on_navigate<F>(&self, listener: F) -> NavigationSubscription
where F: Fn(&str, &HashMap<String, String>) + 'static,

Available on crate feature pages only.

Register a listener for navigation events.

Returns a NavigationSubscription handle. Drop the handle to deregister the listener. The router itself only retains a Weak reference, so dropping the subscription frees the listener closure immediately. The stale Weak entry in navigation_observers is pruned lazily on the next notify_observers call (the listener itself is already gone by then).

Robust against nested reactive nodes spawned during view rendering because this subscription is independent of the reactive Effect / Signal auto-tracking system.

Mirrors pages::Router::on_navigate. (Refs #4234)

On native targets (Fixes #4258) this is effectively a no-op: the returned NavigationSubscription is unbound to any observer storage because reactive observation only fires from the wasm popstate listener. The method is still callable on native so that the SpaRouter trait impl in reinhardt-pages (which dispatches into on_navigate from cross-target launcher code) keeps compiling.

Source

pub fn reverse( &self, name: &str, params: &[(&str, &str)], ) -> Result<String, RouterError>

Available on crate feature pages only.

Generates a URL by route name with parameters.

Source

pub fn render_current(&self) -> Page

Available on crate feature pages only.

Renders the current route’s component.

Returns the registered not_found page when no route matches, or a default 404 page if no not_found handler has been set.

Source

pub fn route_count(&self) -> usize

Available on crate feature pages only.

Returns the number of registered routes.

Source

pub fn has_route(&self, name: &str) -> bool

Available on crate feature pages only.

Checks if a route name exists.

Source

pub fn setup_history_listener(&self)

Available on native and crate feature pages only.

Non-WASM version of setup_history_listener.

Trait Implementations§

Source§

impl Clone for ClientRouter

Source§

fn clone(&self) -> ClientRouter

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ClientRouter

Source§

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

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

impl Default for ClientRouter

Source§

fn default() -> ClientRouter

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

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> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoResult<T> for T

Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<E> ServerFnErrorAssertions<E> for E
where E: Debug,

Source§

fn should_contain_message(&self, expected: &str)
where E: Display,

Assert that the error message contains the specified text.
Source§

fn should_have_message(&self, expected: &str)
where E: Display,

Assert that the error message matches exactly.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more