Skip to main content

Snapshot

Struct Snapshot 

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

What one request may read: one Arc per section, taken together.

Built by Sections::take when the request begins, and read by an adapter’s extractor. Two reads of the same section answer the same Arc, however far apart in the handler they are and whatever lands in between.

Implementations§

Source§

impl Snapshot

Source

pub fn get<T>(&self) -> Option<Arc<T>>
where T: Any + Send + Sync,

The section of type T this request began with.

None when T was not among the sections, or was among them and had not loaded yet. require tells those apart.

Source

pub fn require<T>(&self) -> Result<Arc<T>, NotInScope>
where T: Any + Send + Sync,

The section of type T, or why it is not here.

§Errors

NotInScope::NotListed when T was never registered — a wiring mistake, fixed where the layer is built. NotInScope::NotLoaded when it was registered and nothing has installed a value yet — a startup-order mistake, fixed by loading before serving. The two have different fixes, which is why they are different variants.

Source

pub fn len(&self) -> usize

How many sections this request may read.

Source

pub fn is_empty(&self) -> bool

Whether it carries nothing at all.

Source

pub fn names(&self) -> Vec<&'static str>

The type names registered, whether or not each had loaded.

Source

pub fn merged_with(self, inner: Snapshot) -> Snapshot

This snapshot with inner’s sections laid over it.

What an adapter uses when layers nest and each carries its own list. The inner one wins where both registered a type, because it is the more specific of the two — and nothing is lost, which is the point: a handler under both layers can read either’s sections.

Trait Implementations§

Source§

impl Clone for Snapshot

Source§

fn clone(&self) -> Snapshot

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 Snapshot

Source§

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

The section names, never their contents.

A configuration section holds credentials, and {:?} on a request is the kind of thing that reaches a log line.

Source§

impl Default for Snapshot

Source§

fn default() -> Snapshot

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