Skip to main content

RuntimeLayer

Struct RuntimeLayer 

Source
pub struct RuntimeLayer;
Available on crate feature router only.
Expand description

A Layer that handles runtime requests at each page’s URL.

The browser can request a render in two ways:

  • Send a POST with X-Topcoat-Runtime: true and the document’s signal values as JSON. The layer rewrites this to a GET at the same path and query. The page, layouts, and guards run with the supplied signal values. The rewritten request has an empty body and no RUNTIME_HEADER, Content-Type, or Content-Length headers. To read the original method, use original_method.
  • Open a WebSocket with the RUNTIME_PROTOCOL subprotocol. Each render request on this connection describes an HTTP request: a method, a path, a body, and a few runtime headers, such as RUNTIME_HEADER for a page rerun. The layer dispatches it with the handshake’s other headers as a connected render. Renders run side by side, and each message sent back names the render it belongs to. A connection may have at most max_runs_per_connection renders at once.

WebSocket connections are supported on native servers. HTTP page reruns are also available on WebAssembly.

Other requests pass through unchanged, including form submissions and WebSocket requests that do not use the runtime subprotocol.

Register this layer with RouterBuilderRuntimeExt::runtime. Call it after adding your application’s pathless layers so they receive the rewritten GET.

Trait Implementations§

Source§

impl Clone for RuntimeLayer

Source§

fn clone(&self) -> Self

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 Copy for RuntimeLayer

Source§

impl Debug for RuntimeLayer

Source§

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

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

impl Default for RuntimeLayer

Source§

fn default() -> Self

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

impl Layer for RuntimeLayer

Source§

fn path(&self) -> Option<&Path>

The URL path prefix whose matched routes this layer wraps, or None to wrap every request.
Source§

fn handle<'a>( &'a self, cx: &'a Cx, body: Body, next: Next<'a>, ) -> LayerFuture<'a>

Handles a request, calling next to continue down the chain.

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

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

type Output = T

Should always be Self
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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<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