Skip to main content

Store

Struct Store 

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

A handle on an open store.

One type over every engine - which one is behind it is settled by StoreBuilder when the store is opened, and nothing downstream is generic over it.

Cheap to clone and shared by every clone: the file stays open as long as one handle is alive, and closes when the last is dropped.

Dropping the last handle writes what is still buffered, but it is the one write whose failure it cannot report: Drop has no caller to return an error to, and by then there is rarely anyone left to tell. An application that would rather find out calls Store::close on the way out and reads the result.

Finding out is all it buys. A close that failed has closed the store anyway, a second one answers Ok without flushing again, and the writes are gone - a retry belongs to Store::save_now, while the store is still open.

Implementations§

Source§

impl Store

Source

pub fn from_arc(inner: Arc<dyn StoreBackend>) -> Self

Wraps a backend that was built by hand.

StoreBuilder is the ordinary way in; this is for a StoreBackend implemented outside the crate.

Source

pub fn fallbacks(&self) -> Fallbacks

What a field falls back to here when neither it nor its struct said, put there by StoreBuilder::rules.

Source

pub fn context(&self) -> &RuleContext

What the application handed this store for its declared rules, put there by StoreBuilder::context.

A store opened any other way carries an empty one, and a rule asking it for something is refused with what was on offer.

Source

pub fn as_dyn(&self) -> &Arc<dyn StoreBackend> ⓘ

The erased backend underneath, for code that is generic over StoreBackend rather than over this handle.

Source

pub fn places(&self) -> &Places

The places that are spoken for and by whom, shared by every clone of this handle.

Source

pub fn on_persist_failure( &self, observer: impl Fn(&PersistEvent<'_>) + Send + Sync + 'static, ) -> PersistWatch

Attaches an observer to this store’s background saving, for as long as the returned watch is kept.

It hears every failing streak that outlives the retry budget, with what Disk::on_failure decided about it, and the save that lands after one. It decides nothing: any number can be attached, from anywhere that holds the store. It runs on the flush thread, where closing the store is refused.

A backend that saves on its own terms has nothing to report, and its watch hears nothing.

Source

pub fn persist_failure(&self) -> Option<Arc<Report<StorageError>>>

The failure the last failing streak gave up with, until a save lands again - whatever was decided about it.

Source

pub fn open( config: StoreConfig, mset: MigrationSet, ) -> StorageResult<(Self, MigrationReport)>

Opens the store with the first engine this build has, and refuses in a build with none.

Source§

impl Store

The typed surface, inherent so a call site needs no trait in scope.

Source

pub fn subscribe( &self, kind: SubscriptionKind, callback: StoreCallback, ) -> StoreSubscription

Hears the changes kind names for as long as what comes back is held.

Dropping the StoreSubscription is how it stops, and it can only stop its own: it carries the store it was made on. StoreBackend::subscribe is the same without the guard, for whoever keeps the id and ends it by hand.

let heard = Arc::new(AtomicU32::new(0));
let counter = Arc::clone(&heard);
let listening = store.subscribe(
    SubscriptionKind::Any,
    Arc::new(move |_| {
        counter.fetch_add(1, Ordering::Relaxed);
        Ok(())
    }),
);

store.set(["ui", "width"], &1280u32).unwrap();
drop(listening);
store.set(["ui", "width"], &800u32).unwrap();

assert_eq!(heard.load(Ordering::Relaxed), 1);
Source

pub fn get<T: DeserializeOwned>( &self, path: impl IntoStorePath, ) -> ReadResult<Option<T>>

Reads a value by path, or None if nothing is stored there.

Sees buffered writes as well as committed ones. The type is whatever you ask for and nothing remembers it - Kv::cell is the variant that does.

The levels are given as a list, and a string is not one of them - a name holding a separator is a name, and nesting is spelled out:

store.set(["ui", "width"], &1280u32).unwrap();

assert_eq!(store.get::<u32>(["ui", "width"]).unwrap(), Some(1280));
assert_eq!(store.get::<u32>(["ui", "height"]).unwrap(), None);

// One level called `ui.width`, which is somewhere else entirely.
store.set(["ui.width"], &7u32).unwrap();
assert_eq!(store.get::<u32>(["ui", "width"]).unwrap(), Some(1280));
Source

pub fn set<T: Serialize>( &self, path: impl IntoStorePath, value: &T, ) -> Result<(), WriteValue>

Writes a value at path, creating it or replacing what was there.

The write lands in the buffer and notifies subscribers; the debouncer commits it later. Nothing here carries provenance, so a subscription cannot tell this apart from its own write - use Store::set_with_source when it must.

Source

pub fn set_owned<T: Serialize>( &self, path: StorePath, value: &T, ) -> Result<(), WriteValue>

Store::set for a path already owned, saving the clone the borrowed form would make.

Source

pub fn set_with_source<T: Serialize>( &self, path: impl IntoStorePath, value: &T, source: Option<Uuid>, ) -> Result<(), WriteValue>

Store::set tagged with who made the write.

Subscribers receive the id, which is how a component ignores the echo of its own change instead of reacting to it.

Source

pub fn set_owned_with_source<T: Serialize>( &self, path: StorePath, value: &T, source: Option<Uuid>, ) -> Result<(), WriteValue>

Store::set_with_source for a path already owned.

Source

pub fn delete(&self, path: impl IntoStorePath) -> Result<(), WriteValue>

Removes whatever is at path. Removing an absent path is not an error.

Source

pub fn delete_prefix( &self, prefix: impl IntoStorePath, ) -> Result<(), WriteValue>

Removes every level under prefix, and the value at prefix itself.

Source

pub fn flush_prefix(&self, prefix: impl IntoStorePath) -> FlushResult<()>

Commits what is buffered under prefix.

How much else goes with it is the engine’s answer: redb and sqlite commit what is under the prefix and leave the rest buffered, a document engine rewrites the whole file and so commits everything. See Backend::a_commit_covers_the_whole_store.

Source

pub fn save_now(&self) -> FlushResult<()>

Writes everything buffered, and waits for it to land.

Source

pub fn close(&self) -> FlushResult<()>

Writes what is buffered, stops the background threads and lets go of the file.

Source

pub fn scan_keys( &self, prefix: impl IntoStorePath, ) -> ScanResult<Vec<StorePath>>

The keys under prefix, sorted, without reading their values.

Source

pub fn scan_prefix( &self, prefix: impl IntoStorePath, ) -> ScanResult<Vec<(StorePath, Vec<u8>)>>

Every key under prefix with its bytes, sorted by key.

Source

pub fn decode<T: DeserializeOwned>(&self, bytes: &[u8]) -> StorageResult<T>

Decodes bytes that arrived in a StoreEvent, in whatever format this backend writes.

Bytes that will not decode - because the file was edited by hand, or the field changed type - are an error naming the type that was asked for and what the codec made of them, so a caller can tell a stored default from a value it could not read.

Source§

impl Store

Reactive values addressed by path, without declaring a struct. See crate::store::Kv.

Source

pub fn kv(&self) -> Kv

Trait Implementations§

Source§

impl Clone for Store

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 Debug for Store

Source§

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

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

impl Deref for Store

Source§

type Target = dyn StoreBackend

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Eq for Store

Source§

impl PartialEq for Store

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StoreBackend for Store

Addressing the store by path, with nothing in the way - and what that costs is written on StoreBackend itself, which is worth reading before reaching for any of it. The short of it: a write here lands wherever it is aimed, declared paths included, and Kv is the surface that refuses to.

Store::get and Store::set are the same operations under a shorter name, so they carry the same warning.

Source§

fn get_raw(&self, path: &StorePath) -> StorageResult<Option<Vec<u8>>>

Source§

fn set_erased( &self, path: &StorePath, value: &dyn Serialize, by: Writer, ) -> StorageResult<()>

Source§

fn set_owned_erased( &self, path: StorePath, value: &dyn Serialize, by: Writer, ) -> StorageResult<()>

Source§

fn get_erased( &self, path: &StorePath, f: &mut dyn FnMut(&mut dyn Deserializer<'_>) -> StorageResult<()>, ) -> StorageResult<bool>

Runs f against a deserializer positioned at path, in the backend’s own format. Ok(false) means the key is absent and f never ran.
Source§

fn decode_erased( &self, bytes: &[u8], f: &mut dyn FnMut(&mut dyn Deserializer<'_>) -> StorageResult<()>, ) -> StorageResult<()>

Same, for bytes carried by a crate::StoreEvent.
Source§

fn delete_with_source( &self, path: &StorePath, source: Option<Uuid>, ) -> StorageResult<()>

Source§

fn delete(&self, path: &StorePath) -> StorageResult<()>

Source§

fn delete_prefix_with_source( &self, prefix: &StorePath, source: Option<Uuid>, ) -> StorageResult<()>

Removes every key under prefix, emitting one crate::StoreOp::DeletePrefix instead of a Delete per key.
Source§

fn scan_prefix( &self, prefix: &StorePath, ) -> StorageResult<Vec<(StorePath, Vec<u8>)>>

Every key under prefix, sorted by key on every backend. Read more
Source§

fn visit_prefix( &self, prefix: &StorePath, visit: &mut dyn FnMut(PathRef<'_>, &[u8]) -> StorageResult<()>, ) -> StorageResult<()>

Hands every entry under prefix to visit, in the order a scan lists. Read more
Source§

fn scan_keys(&self, prefix: &StorePath) -> StorageResult<Vec<StorePath>>

The keys under prefix, sorted, without reading their values. Read more
Source§

fn parallel_reads(&self) -> bool

Whether this store was asked to read large collections on more than one core - StoreConfig::parallel_reads. Read more
Source§

fn files_layout(&self) -> Option<StoreLayout>

Where this store keeps what it keeps. Read more
Source§

fn persist_health(&self) -> Option<Arc<PersistHealth>>

How this store’s background saving is faring, and who is listening. Read more
Source§

fn save_now(&self) -> StorageResult<()>

Writes everything buffered and says whether it landed. Read more
Source§

fn close(&self) -> StorageResult<()>

Writes what is buffered, stops the background threads and lets go of the file. Read more
Source§

fn is_closed(&self) -> bool

Whether StoreBackend::close has already run. Read more
Source§

fn subscribe( &self, kind: SubscriptionKind, callback: StoreCallback, ) -> SubscriptionId

Registers callback for the changes kind names, under an id from SubscriptionId::next.
Source§

fn unsubscribe(&self, id: SubscriptionId) -> bool

Removes the subscription id names, and says whether this store held it. An id another store handed out is never held here.
Source§

fn flush_prefix(&self, prefix: &StorePath) -> StorageResult<()>

Gets what is buffered under prefix onto disk. Read more
Source§

fn flush_async(&self) -> Commit ⓘ

Commits without blocking; the future resolves once a flush has landed. Read more
Source§

fn save_async(&self) -> Commit ⓘ

Writes everything buffered, as StoreBackend::save_now does, and resolves with how that write ended - without blocking the thread that awaits it. Read more
Source§

fn close_async(&self) -> Commit ⓘ

Closes the store, as StoreBackend::close does, and resolves with what the closing write did - without blocking the thread that awaits it. Read more
Source§

fn is_initialized(&self, namespace: &StorePath) -> StorageResult<bool>

Source§

fn record_schema( &self, at: &StorePath, schema: &SchemaSnapshot, ) -> StorageResult<()>

Writes down the places a declaration claims, at the prefix it claims them under. Read more
Source§

fn set_initialized( &self, namespace: &StorePath, state: InitState, ) -> StorageResult<()>

Records whether namespace has been seeded. Read more
Source§

fn delete_prefix(&self, prefix: &StorePath) -> StorageResult<()>

Source§

fn mark_initialized(&self, namespace: &StorePath) -> StorageResult<()>

Auto Trait Implementations§

§

impl !RefUnwindSafe for Store

§

impl !UnwindSafe for Store

§

impl Freeze for Store

§

impl Send for Store

§

impl Sync for Store

§

impl Unpin for Store

§

impl UnsafeUnpin for Store

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> 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> OpaqueAttachment for T
where T: Send + Sync + 'static,

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<S> StoreExt for S
where S: StoreBackend + ?Sized,

Source§

fn get<T: DeserializeOwned>( &self, path: impl IntoStorePath, ) -> ReadResult<Option<T>>

Source§

fn set<T: Serialize>( &self, path: impl IntoStorePath, value: &T, ) -> Result<(), WriteValue>

Source§

fn set_owned<T: Serialize>( &self, path: StorePath, value: &T, ) -> Result<(), WriteValue>

Source§

fn set_with_source<T: Serialize>( &self, path: impl IntoStorePath, value: &T, source: Option<Uuid>, ) -> Result<(), WriteValue>

Source§

fn set_owned_with_source<T: Serialize>( &self, path: StorePath, value: &T, source: Option<Uuid>, ) -> Result<(), WriteValue>

Source§

fn decode<T: DeserializeOwned>(&self, bytes: &[u8]) -> StorageResult<T>

Reads bytes that arrived in a StoreEvent as T.
Source§

fn decode_with<T>( &self, at: &StorePath, bytes: &[u8], read: ReadAs<T>, ) -> StorageResult<T>

The same, reading through read rather than through T’s own impl. Read more
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<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