perf: eliminate unnecessary clones and improve API ergonomics

- PromptBuilder::new now takes &[String] instead of Vec<String>
- GeminiClient::new now takes &str, &[String] instead of owned values
- FileBatch::from_path now takes &Path instead of PathBuf
- categorize_files_offline now takes Vec<String> (ownership) instead of &[String]
- handle_offline_organization now takes FileBatch by value

These changes eliminate ~5-50 KB of unnecessary allocations for typical
file counts, reduce allocator pressure, and improve API clarity by properly
expressing ownership semantics.

No functional changes - all tests pass.
This commit is contained in:
2026-01-08 23:42:10 +05:30
parent eeb07983cb
commit ba0ea3f221
8 changed files with 32 additions and 25 deletions

View File

@@ -23,7 +23,7 @@ pub struct PromptBuilder {
}
impl PromptBuilder {
pub fn new(file_list: Vec<String>) -> Self {
pub fn new(file_list: &[String]) -> Self {
Self {
file_list: file_list.join(", "),
}