pub struct InMemoryMemoryStore { /* private fields */ }Expand description
纯内存版的实现:
- 使用
HashMap<conversation_id, Vec<Message>>保存消息; - 不做容量控制与持久化,仅用于开发与测试;
- 线程安全,但不保证高并发场景下的性能。
Implementations§
Trait Implementations§
Source§impl Default for InMemoryMemoryStore
impl Default for InMemoryMemoryStore
Source§fn default() -> InMemoryMemoryStore
fn default() -> InMemoryMemoryStore
Returns the “default value” for a type. Read more
Source§impl MemoryStore for InMemoryMemoryStore
impl MemoryStore for InMemoryMemoryStore
Source§fn query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
query: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Message>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
query: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Message>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
一个极简的包含匹配查询实现:
- 仅在指定
conversation_id的会话内搜索; - 使用不区分大小写的子串匹配;
- 若 query 为空字符串,则返回整个会话的消息列表。
Source§fn add<'life0, 'life1, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
message: Message,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn add<'life0, 'life1, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
message: Message,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
追加一条消息到某个会话中。
Source§fn get_conversation<'life0, 'life1, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Message>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_conversation<'life0, 'life1, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<Message>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
获取某个会话的完整消息列表。
Source§fn save_conversation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
messages: &'life2 [Message],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn save_conversation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
conversation_id: &'life1 str,
messages: &'life2 [Message],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
覆盖保存整个会话的消息列表。
Auto Trait Implementations§
impl !Freeze for InMemoryMemoryStore
impl RefUnwindSafe for InMemoryMemoryStore
impl Send for InMemoryMemoryStore
impl Sync for InMemoryMemoryStore
impl Unpin for InMemoryMemoryStore
impl UnsafeUnpin for InMemoryMemoryStore
impl UnwindSafe for InMemoryMemoryStore
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