pub struct JsonFileHistoryStore { /* private fields */ }Expand description
JSON-backed HistoryStore that writes the full snapshot to a
single file. save pretty-prints; load returns Ok(None) when
the file does not exist (first run) so callers can seed an empty
conversation without branching on the missing-file case.
Implementations§
Trait Implementations§
Source§impl HistoryStore for JsonFileHistoryStore
impl HistoryStore for JsonFileHistoryStore
Source§type Error = JsonFileHistoryStoreError
type Error = JsonFileHistoryStoreError
Error type surfaced from
save /
load. Use std::convert::Infallible when the
implementation cannot fail (see InMemoryHistoryStore).Source§fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
snapshot: &'life1 ConversationSnapshot,
) -> Pin<Box<dyn Future<Output = Result<(), <JsonFileHistoryStore as HistoryStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
JsonFileHistoryStore: 'async_trait,
fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
snapshot: &'life1 ConversationSnapshot,
) -> Pin<Box<dyn Future<Output = Result<(), <JsonFileHistoryStore as HistoryStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
JsonFileHistoryStore: 'async_trait,
Persist
snapshot so a later load returns it.
Implementations should treat this as an overwrite — the façade
passes the full updated ConversationSnapshot every time
rather than diffing.Source§fn load<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<ConversationSnapshot>, <JsonFileHistoryStore as HistoryStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
JsonFileHistoryStore: 'async_trait,
fn load<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<ConversationSnapshot>, <JsonFileHistoryStore as HistoryStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
JsonFileHistoryStore: 'async_trait,
Return the most recently persisted snapshot, or
Ok(None) when
the store has never been written to. Returning Ok(None) lets
callers default-init the conversation on first run instead of
special-casing a missing payload.Auto Trait Implementations§
impl Freeze for JsonFileHistoryStore
impl RefUnwindSafe for JsonFileHistoryStore
impl Send for JsonFileHistoryStore
impl Sync for JsonFileHistoryStore
impl Unpin for JsonFileHistoryStore
impl UnsafeUnpin for JsonFileHistoryStore
impl UnwindSafe for JsonFileHistoryStore
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
Mutably borrows from an owned value. Read more