pub struct MemoryStore { /* private fields */ }Expand description
A store with no file.
It keeps what redb keeps - one value per path, written as MessagePack - in a sorted map, and nothing outlives it: there is no buffer, no background thread and nothing to flush, so every commit has landed by the time it is asked for. What it refuses is what redb refuses, which is less than any other engine here, so a store that falls back to it keeps taking every write it took on disk.
The bookkeeping lives beside the values - the version each line stands at, the schemas recorded, the migration log, the format record, which namespaces were seeded - so a migration runs over it the way it runs over a file.
Implementations§
Source§impl MemoryStore
impl MemoryStore
Sourcepub fn open(
config: &StoreConfig,
migrations: MigrationSet,
) -> StorageResult<(Self, MigrationReport)>
pub fn open( config: &StoreConfig, migrations: MigrationSet, ) -> StorageResult<(Self, MigrationReport)>
An empty store, under the limits and read settings config names, with
migrations run over it. Nothing else in config applies: there is no
file to reach or to save.
Trait Implementations§
Source§impl Clone for MemoryStore
impl Clone for MemoryStore
Source§impl Debug for MemoryStore
impl Debug for MemoryStore
Source§impl StoreBackend for MemoryStore
impl StoreBackend for MemoryStore
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 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 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 ⓘ
fn is_initialized(&self, namespace: &StorePath) -> StorageResult<bool>
Source§fn set_initialized(
&self,
namespace: &StorePath,
state: InitState,
) -> StorageResult<()>
fn set_initialized( &self, namespace: &StorePath, state: InitState, ) -> StorageResult<()>
namespace has been seeded. Read moreSource§fn record_schema(
&self,
at: &StorePath,
schema: &SchemaSnapshot,
) -> StorageResult<()>
fn record_schema( &self, at: &StorePath, schema: &SchemaSnapshot, ) -> StorageResult<()>
fn delete_prefix(&self, prefix: &StorePath) -> StorageResult<()>
Source§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 persist_health(&self) -> Option<Arc<PersistHealth>>
fn persist_health(&self) -> Option<Arc<PersistHealth>>
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 mark_initialized(&self, namespace: &StorePath) -> StorageResult<()>
Auto Trait Implementations§
impl !RefUnwindSafe for MemoryStore
impl !UnwindSafe for MemoryStore
impl Freeze for MemoryStore
impl Send for MemoryStore
impl Sync for MemoryStore
impl Unpin for MemoryStore
impl UnsafeUnpin for MemoryStore
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<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.