perf: avoid small own clones and intermediate Vec allocations

- Derive Copy on 6 small enums (MessageRole, TaskState, StorageKind, EmbeddingBackend, PdfIngestMode, KnowledgeEntityType)
- Change create_ingestion_payload files param from Vec<FileInfo> to &[FileInfo]
- Remove 5 intermediate Vec allocations (4 embedding serialization + 1 format_history) using write! loop
- Remove 7 unnecessary .clone() calls exposed by Copy derive
This commit is contained in:
Per Stark
2026-05-27 10:28:08 +02:00
parent ffea0ef126
commit 056f116885
9 changed files with 64 additions and 60 deletions
+3 -3
View File
@@ -3,7 +3,7 @@ use serde::Deserialize;
use std::env;
/// Selects the embedding backend for vector generation.
#[derive(Clone, Deserialize, Debug, Default, PartialEq)]
#[derive(Clone, Copy, Deserialize, Debug, Default, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum EmbeddingBackend {
/// Use OpenAI-compatible API for embeddings.
@@ -15,7 +15,7 @@ pub enum EmbeddingBackend {
Hashed,
}
#[derive(Clone, Deserialize, Debug, PartialEq)]
#[derive(Clone, Copy, Deserialize, Debug, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum StorageKind {
Local,
@@ -33,7 +33,7 @@ fn default_s3_region() -> String {
}
/// Selects the strategy used for PDF ingestion.
#[derive(Clone, Deserialize, Debug)]
#[derive(Clone, Copy, Deserialize, Debug)]
#[serde(rename_all = "kebab-case")]
pub enum PdfIngestMode {
/// Only rely on classic text extraction (no LLM fallbacks).