langchain_rust/memory/
simple_memory.rs

1use std::sync::Arc;
2
3use tokio::sync::Mutex;
4
5use crate::schemas::{memory::BaseMemory, messages::Message};
6
7pub struct SimpleMemory {
8    messages: Vec<Message>,
9}
10
11impl SimpleMemory {
12    pub fn new() -> Self {
13        Self {
14            messages: Vec::new(),
15        }
16    }
17}
18
19impl Into<Arc<dyn BaseMemory>> for SimpleMemory {
20    fn into(self) -> Arc<dyn BaseMemory> {
21        Arc::new(self)
22    }
23}
24
25impl Into<Arc<Mutex<dyn BaseMemory>>> for SimpleMemory {
26    fn into(self) -> Arc<Mutex<dyn BaseMemory>> {
27        Arc::new(Mutex::new(self))
28    }
29}
30
31impl BaseMemory for SimpleMemory {
32    fn messages(&self) -> Vec<Message> {
33        self.messages.clone()
34    }
35    fn add_message(&mut self, message: Message) {
36        self.messages.push(message);
37    }
38    fn clear(&mut self) {
39        self.messages.clear();
40    }
41}