pub struct InMemoryGarrison { /* private fields */ }Expand description
Thread-safe in-memory Garrison implementation.
Stores all entries in memory using a VecDeque protected by an RwLock
for concurrent access. All data is lost when the process terminates;
use SqliteGarrison (feature sqlite) when persistence is required.
§Examples
use paladin_memory::garrison::InMemoryGarrison;
use paladin_core::platform::container::garrison::GarrisonConfig;
use paladin_ports::output::garrison_port::GarrisonPort;
use paladin_core::platform::container::garrison::{GarrisonEntry, ConversationRole};
#[tokio::main]
async fn main() {
let config = GarrisonConfig::default();
let garrison = InMemoryGarrison::new(config);
// Store an entry
let entry = GarrisonEntry::new(
ConversationRole::User,
"Hello!".to_string()
);
garrison.remember(entry).await.unwrap();
// Retrieve it
let recent = garrison.recall_recent(10).await.unwrap();
assert_eq!(recent.len(), 1);
}Implementations§
Source§impl InMemoryGarrison
impl InMemoryGarrison
Sourcepub fn new(config: GarrisonConfig) -> Self
pub fn new(config: GarrisonConfig) -> Self
Creates a new in-memory Garrison with the given configuration.
§Arguments
config- Configuration for windowing and eviction behavior
§Examples
use paladin_memory::garrison::InMemoryGarrison;
use paladin_core::platform::container::garrison::GarrisonConfig;
let config = GarrisonConfig::new(100, Some(4000));
let garrison = InMemoryGarrison::new(config);Trait Implementations§
Source§impl GarrisonPort for InMemoryGarrison
impl GarrisonPort for InMemoryGarrison
Source§fn remember<'life0, 'async_trait>(
&'life0 self,
entry: GarrisonEntry,
) -> Pin<Box<dyn Future<Output = Result<(), GarrisonError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn remember<'life0, 'async_trait>(
&'life0 self,
entry: GarrisonEntry,
) -> Pin<Box<dyn Future<Output = Result<(), GarrisonError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stores a new entry in the Garrison Read more
Source§fn recall_recent<'life0, 'async_trait>(
&'life0 self,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<GarrisonEntry>, GarrisonError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn recall_recent<'life0, 'async_trait>(
&'life0 self,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<GarrisonEntry>, GarrisonError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Retrieves the N most recent entries Read more
Source§fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<GarrisonEntry>, GarrisonError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<GarrisonEntry>, GarrisonError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Searches for entries matching a text query Read more
Auto Trait Implementations§
impl !Freeze for InMemoryGarrison
impl RefUnwindSafe for InMemoryGarrison
impl Send for InMemoryGarrison
impl Sync for InMemoryGarrison
impl Unpin for InMemoryGarrison
impl UnsafeUnpin for InMemoryGarrison
impl UnwindSafe for InMemoryGarrison
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