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
impl Store
Sourcepub fn from_arc(inner: Arc<dyn StoreBackend>) -> Self
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.
Sourcepub fn fallbacks(&self) -> Fallbacks
pub fn fallbacks(&self) -> Fallbacks
What a field falls back to here when neither it nor its struct said,
put there by StoreBuilder::rules.
Sourcepub fn context(&self) -> &RuleContext
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.
Sourcepub fn as_dyn(&self) -> &Arc<dyn StoreBackend> ⓘ
pub fn as_dyn(&self) -> &Arc<dyn StoreBackend> ⓘ
The erased backend underneath, for code that is generic over
StoreBackend rather than over this handle.
Sourcepub fn places(&self) -> &Places
pub fn places(&self) -> &Places
The places that are spoken for and by whom, shared by every clone of this handle.
Sourcepub fn on_persist_failure(
&self,
observer: impl Fn(&PersistEvent<'_>) + Send + Sync + 'static,
) -> PersistWatch
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.
Sourcepub fn persist_failure(&self) -> Option<Arc<Report<StorageError>>>
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.
Sourcepub fn open(
config: StoreConfig,
mset: MigrationSet,
) -> StorageResult<(Self, MigrationReport)>
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.
impl Store
The typed surface, inherent so a call site needs no trait in scope.
Sourcepub fn subscribe(
&self,
kind: SubscriptionKind,
callback: StoreCallback,
) -> StoreSubscription
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);Sourcepub fn get<T: DeserializeOwned>(
&self,
path: impl IntoStorePath,
) -> ReadResult<Option<T>>
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));Sourcepub fn set<T: Serialize>(
&self,
path: impl IntoStorePath,
value: &T,
) -> Result<(), WriteValue>
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.
Sourcepub fn set_owned<T: Serialize>(
&self,
path: StorePath,
value: &T,
) -> Result<(), WriteValue>
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.
Sourcepub fn set_with_source<T: Serialize>(
&self,
path: impl IntoStorePath,
value: &T,
source: Option<Uuid>,
) -> Result<(), WriteValue>
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.
Sourcepub fn set_owned_with_source<T: Serialize>(
&self,
path: StorePath,
value: &T,
source: Option<Uuid>,
) -> Result<(), WriteValue>
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.
Sourcepub fn delete(&self, path: impl IntoStorePath) -> Result<(), WriteValue>
pub fn delete(&self, path: impl IntoStorePath) -> Result<(), WriteValue>
Removes whatever is at path. Removing an absent path is not an error.
Sourcepub fn delete_prefix(
&self,
prefix: impl IntoStorePath,
) -> Result<(), WriteValue>
pub fn delete_prefix( &self, prefix: impl IntoStorePath, ) -> Result<(), WriteValue>
Removes every level under prefix, and the value at prefix itself.
Sourcepub fn flush_prefix(&self, prefix: impl IntoStorePath) -> FlushResult<()>
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.
Sourcepub fn save_now(&self) -> FlushResult<()>
pub fn save_now(&self) -> FlushResult<()>
Writes everything buffered, and waits for it to land.
Sourcepub fn close(&self) -> FlushResult<()>
pub fn close(&self) -> FlushResult<()>
Writes what is buffered, stops the background threads and lets go of the file.
Sourcepub fn scan_keys(
&self,
prefix: impl IntoStorePath,
) -> ScanResult<Vec<StorePath>>
pub fn scan_keys( &self, prefix: impl IntoStorePath, ) -> ScanResult<Vec<StorePath>>
The keys under prefix, sorted, without reading their values.
Sourcepub fn scan_prefix(
&self,
prefix: impl IntoStorePath,
) -> ScanResult<Vec<(StorePath, Vec<u8>)>>
pub fn scan_prefix( &self, prefix: impl IntoStorePath, ) -> ScanResult<Vec<(StorePath, Vec<u8>)>>
Every key under prefix with its bytes, sorted by key.
Sourcepub fn decode<T: DeserializeOwned>(&self, bytes: &[u8]) -> StorageResult<T>
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.
Trait Implementations§
impl Eq for Store
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.
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.
fn get_raw(&self, path: &StorePath) -> StorageResult<Option<Vec<u8>>>
fn set_erased( &self, path: &StorePath, value: &dyn Serialize, by: Writer, ) -> StorageResult<()>
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>
fn get_erased( &self, path: &StorePath, f: &mut dyn FnMut(&mut dyn Deserializer<'_>) -> StorageResult<()>, ) -> StorageResult<bool>
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<()>
fn decode_erased( &self, bytes: &[u8], f: &mut dyn FnMut(&mut dyn Deserializer<'_>) -> StorageResult<()>, ) -> StorageResult<()>
crate::StoreEvent.fn delete_with_source( &self, path: &StorePath, source: Option<Uuid>, ) -> StorageResult<()>
fn delete(&self, path: &StorePath) -> StorageResult<()>
Source§fn delete_prefix_with_source(
&self,
prefix: &StorePath,
source: Option<Uuid>,
) -> StorageResult<()>
fn delete_prefix_with_source( &self, prefix: &StorePath, source: Option<Uuid>, ) -> StorageResult<()>
prefix, emitting one
crate::StoreOp::DeletePrefix instead of a Delete per key.Source§fn scan_prefix(
&self,
prefix: &StorePath,
) -> StorageResult<Vec<(StorePath, Vec<u8>)>>
fn scan_prefix( &self, prefix: &StorePath, ) -> StorageResult<Vec<(StorePath, Vec<u8>)>>
prefix, sorted by key on every backend. Read moreSource§fn visit_prefix(
&self,
prefix: &StorePath,
visit: &mut dyn FnMut(PathRef<'_>, &[u8]) -> StorageResult<()>,
) -> StorageResult<()>
fn visit_prefix( &self, prefix: &StorePath, visit: &mut dyn FnMut(PathRef<'_>, &[u8]) -> StorageResult<()>, ) -> StorageResult<()>
Source§fn scan_keys(&self, prefix: &StorePath) -> StorageResult<Vec<StorePath>>
fn scan_keys(&self, prefix: &StorePath) -> StorageResult<Vec<StorePath>>
prefix, sorted, without reading their values. Read moreSource§fn parallel_reads(&self) -> bool
fn parallel_reads(&self) -> bool
StoreConfig::parallel_reads. Read moreSource§fn files_layout(&self) -> Option<StoreLayout>
fn files_layout(&self) -> Option<StoreLayout>
Source§fn persist_health(&self) -> Option<Arc<PersistHealth>>
fn persist_health(&self) -> Option<Arc<PersistHealth>>
Source§fn save_now(&self) -> StorageResult<()>
fn save_now(&self) -> StorageResult<()>
Source§fn close(&self) -> StorageResult<()>
fn close(&self) -> StorageResult<()>
Source§fn subscribe(
&self,
kind: SubscriptionKind,
callback: StoreCallback,
) -> SubscriptionId
fn subscribe( &self, kind: SubscriptionKind, callback: StoreCallback, ) -> SubscriptionId
Source§fn unsubscribe(&self, id: SubscriptionId) -> bool
fn unsubscribe(&self, id: SubscriptionId) -> bool
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<()>
fn flush_prefix(&self, prefix: &StorePath) -> StorageResult<()>
prefix onto disk. Read moreSource§fn flush_async(&self) -> Commit ⓘ
fn flush_async(&self) -> Commit ⓘ
Source§fn save_async(&self) -> Commit ⓘ
fn save_async(&self) -> Commit ⓘ
StoreBackend::save_now does, and
resolves with how that write ended - without blocking the thread that
awaits it. Read moreSource§fn close_async(&self) -> Commit ⓘ
fn close_async(&self) -> Commit ⓘ
StoreBackend::close does, and resolves with
what the closing write did - without blocking the thread that awaits
it. Read morefn is_initialized(&self, namespace: &StorePath) -> StorageResult<bool>
Source§fn record_schema(
&self,
at: &StorePath,
schema: &SchemaSnapshot,
) -> StorageResult<()>
fn record_schema( &self, at: &StorePath, schema: &SchemaSnapshot, ) -> StorageResult<()>
Source§fn set_initialized(
&self,
namespace: &StorePath,
state: InitState,
) -> StorageResult<()>
fn set_initialized( &self, namespace: &StorePath, state: InitState, ) -> StorageResult<()>
namespace has been seeded. Read morefn delete_prefix(&self, prefix: &StorePath) -> StorageResult<()>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreimpl<T> OpaqueAttachment for T
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read moreSource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<S> StoreExt for Swhere
S: StoreBackend + ?Sized,
impl<S> StoreExt for Swhere
S: StoreBackend + ?Sized,
fn get<T: DeserializeOwned>( &self, path: impl IntoStorePath, ) -> ReadResult<Option<T>>
fn set<T: Serialize>( &self, path: impl IntoStorePath, value: &T, ) -> Result<(), WriteValue>
fn set_owned<T: Serialize>( &self, path: StorePath, value: &T, ) -> Result<(), WriteValue>
fn set_with_source<T: Serialize>( &self, path: impl IntoStorePath, value: &T, source: Option<Uuid>, ) -> Result<(), WriteValue>
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>
fn decode<T: DeserializeOwned>(&self, bytes: &[u8]) -> StorageResult<T>
StoreEvent as T.