mem0_rust/
errors.rs

1//! Error types for mem0-rust.
2//!
3//! This module provides comprehensive error types for all operations.
4
5use thiserror::Error;
6
7/// Main error type for memory operations
8#[derive(Error, Debug)]
9pub enum MemoryError {
10    /// Memory record not found
11    #[error("memory with id {0} not found")]
12    NotFound(String),
13
14    /// Embedding dimension mismatch
15    #[error("embedding dimension mismatch: expected {expected}, got {actual}")]
16    DimensionMismatch { expected: usize, actual: usize },
17
18    /// Embedding provider error
19    #[error("embedding error: {0}")]
20    Embedding(#[from] EmbeddingError),
21
22    /// Vector store error
23    #[error("vector store error: {0}")]
24    VectorStore(#[from] VectorStoreError),
25
26    /// LLM error
27    #[error("LLM error: {0}")]
28    LLM(#[from] LLMError),
29
30    /// Configuration error
31    #[error("configuration error: {0}")]
32    Config(String),
33
34    /// Serialization error
35    #[error("serialization error: {0}")]
36    Serialization(#[from] serde_json::Error),
37
38    /// Invalid input
39    #[error("invalid input: {0}")]
40    InvalidInput(String),
41
42    /// History database error
43    #[error("history database error: {0}")]
44    History(String),
45
46    /// Reranking error
47    #[error("reranking error: {0}")]
48    Reranker(String),
49}
50
51/// Embedding provider errors
52#[derive(Error, Debug)]
53pub enum EmbeddingError {
54    /// API error
55    #[error("API error: {0}")]
56    Api(String),
57
58    /// Network error
59    #[error("network error: {0}")]
60    Network(String),
61
62    /// Rate limit exceeded
63    #[error("rate limit exceeded")]
64    RateLimited,
65
66    /// Invalid response
67    #[error("invalid response: {0}")]
68    InvalidResponse(String),
69
70    /// Provider not configured
71    #[error("embedding provider not configured")]
72    NotConfigured,
73}
74
75/// Vector store errors
76#[derive(Error, Debug)]
77pub enum VectorStoreError {
78    /// Connection error
79    #[error("connection error: {0}")]
80    Connection(String),
81
82    /// Record not found
83    #[error("record not found: {0}")]
84    NotFound(String),
85
86    /// Insert error
87    #[error("insert error: {0}")]
88    Insert(String),
89
90    /// Search error
91    #[error("search error: {0}")]
92    Search(String),
93
94    /// Delete error
95    #[error("delete error: {0}")]
96    Delete(String),
97
98    /// Update error
99    #[error("update error: {0}")]
100    Update(String),
101
102    /// Collection/index error
103    #[error("collection error: {0}")]
104    Collection(String),
105
106    /// Provider not configured
107    #[error("vector store not configured")]
108    NotConfigured,
109}
110
111/// LLM provider errors
112#[derive(Error, Debug)]
113pub enum LLMError {
114    /// API error
115    #[error("API error: {0}")]
116    Api(String),
117
118    /// Network error
119    #[error("network error: {0}")]
120    Network(String),
121
122    /// Rate limit exceeded
123    #[error("rate limit exceeded")]
124    RateLimited,
125
126    /// Invalid response
127    #[error("invalid response: {0}")]
128    InvalidResponse(String),
129
130    /// JSON parsing error
131    #[error("JSON parsing error: {0}")]
132    JsonParse(String),
133
134    /// Provider not configured
135    #[error("LLM provider not configured")]
136    NotConfigured,
137}
138
139/// Result type alias for memory operations
140pub type Result<T> = std::result::Result<T, MemoryError>;