pub struct MemoryStore { /* private fields */ }Expand description
Long-term memory store backed by SQLite.
Provides key-value persistence with upsert semantics and scoping, so agents can retain durable facts about users and projects across sessions — the “long-term memory” primitive used by OpenClaw/Manus-style assistants.
§Usage
use ravenclaws::persistence::MemoryStore;
let store = MemoryStore::open(":memory:").expect("open memory store");
store.set("user", "favorite_color", "blue").expect("set");
assert_eq!(store.get("user", "favorite_color").unwrap(), Some("blue".to_string()));Implementations§
Source§impl MemoryStore
impl MemoryStore
Sourcepub fn open<P: AsRef<Path>>(path: P) -> SqlResult<Self>
pub fn open<P: AsRef<Path>>(path: P) -> SqlResult<Self>
Open or create a SQLite database at the given path for memory storage.
Use :memory: for an in-memory database (useful for testing).
Sourcepub fn set(&self, scope: &str, key: &str, value: &str) -> SqlResult<()>
pub fn set(&self, scope: &str, key: &str, value: &str) -> SqlResult<()>
Set (upsert) a memory value for a key within a scope.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for MemoryStore
impl !RefUnwindSafe for MemoryStore
impl !Sync for MemoryStore
impl !UnwindSafe for MemoryStore
impl Send 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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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> ⓘ
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 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> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request