Skip to main content

Cx

Struct Cx 

Source
pub struct Cx { /* private fields */ }
Expand description

The request context.

Add cx: &Cx to a handler or component to access context. Topcoat supplies it automatically. Read shared application values with app_context and values scoped to the request with request_context.

Clones share the request’s state. Use with or with_many to add context values in a child scope without changing the parent. Move an owned clone into work that outlives the handler, such as a streaming response.

Implementations§

Source§

impl Cx

Source

pub fn new(app_context: Arc<AppContext>) -> Cx

Creates the context for one request over the shared app context, with an empty request context.

Source

pub fn id(&self) -> CxId

Returns this request’s unique CxId.

Source

pub fn keyed(&self, key: impl IdentityKey) -> Cx

Returns a child context with a key derived from the parent’s key, this call’s source location, and key.

Use () to distinguish separate call locations, or an item key to distinguish repeated calls at one location:

let first = cx.keyed(());
let second = cx.keyed(());

for id in [1, 2, 3] {
    let child = cx.keyed(id);
}

The same inputs produce the same key. Moving the call in source changes it. The child shares the parent’s request state and context values.

Source

pub fn with<T>(&self, value: T) -> Cx
where T: Any + Send + Sync,

Returns a child handle whose request context also holds value.

The child inherits other context values and shares the request’s state. If this type is already registered, the child sees value while the parent still sees the original.

Source

pub fn with_many<V>(&self, values: V) -> Cx
where V: ContextValues,

Returns a child handle whose request context also holds every value in values, a tuple of context values or a RequestContext.

Behaves like chained with calls, but builds the child’s request context in one step.

Trait Implementations§

Source§

impl Clone for Cx

Source§

fn clone(&self) -> Cx

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 Cx

Source§

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

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

impl Default for Cx

Source§

fn default() -> Cx

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

Auto Trait Implementations§

§

impl !RefUnwindSafe for Cx

§

impl !UnwindSafe for Cx

§

impl Freeze for Cx

§

impl Send for Cx

§

impl Sync for Cx

§

impl Unpin for Cx

§

impl UnsafeUnpin for Cx

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