perf: completely eradicate large vector allocations and state locking double-clones in main, meta, env, workspaces, and notes modules
This commit is contained in:
1 parent
6b37799cc5
commit
9476bcd649
9 files changed
+352
-125
No files matched your search
@@ -147,17 +147,14 @@ impl McpTool for SearchSnippetsHandler {
|
||||
async fn execute(&self, args: Value, state: Arc<MemoryState>) -> Result<String, String> {
|
||||
let req: SearchSnippetsTool = serde_json::from_value(args).map_err(|e| e.to_string())?;
|
||||
let query = req.query.to_lowercase();
|
||||
let snippets = state.snippets.read();
|
||||
let mut results = Vec::new();
|
||||
for s in snippets {
|
||||
if contains_ignore_ascii_case(&s.name, &query)
|
||||
|| contains_ignore_ascii_case(&s.description, &query)
|
||||
|| contains_ignore_ascii_case(&s.language, &query)
|
||||
{
|
||||
results.push(s);
|
||||
}
|
||||
}
|
||||
let data = serde_json::to_string(&results).unwrap_or_default();
|
||||
let data = state.snippets.read_with(|snippets| {
|
||||
let results: Vec<_> = snippets.iter().filter(|s| {
|
||||
contains_ignore_ascii_case(&s.name, &query)
|
||||
|| contains_ignore_ascii_case(&s.description, &query)
|
||||
|| contains_ignore_ascii_case(&s.language, &query)
|
||||
}).cloned().collect();
|
||||
serde_json::to_string(&results).unwrap_or_default()
|
||||
});
|
||||
Ok(data.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user