pub enum EmbedderError {
Show 20 variants
EmbedderUnavailable {
model: String,
reason: String,
},
EmbeddingFailed {
model: String,
source: Box<dyn Error + Send + Sync>,
},
ModelNotFound {
name: String,
},
ModelLoadFailed {
path: PathBuf,
source: Box<dyn Error + Send + Sync>,
},
IndexCorrupted {
path: PathBuf,
detail: String,
},
IndexVersionMismatch {
expected: u16,
found: u16,
},
DimensionMismatch {
expected: usize,
found: usize,
},
IndexNotFound {
path: PathBuf,
},
QueryParseError {
query: String,
detail: String,
},
SearchTimeout {
elapsed_ms: u64,
budget_ms: u64,
},
FederatedInsufficientResponses {
required: usize,
received: usize,
},
RerankerUnavailable {
model: String,
},
RerankFailed {
model: String,
source: Box<dyn Error + Send + Sync>,
},
Io(Error),
InvalidConfig {
field: String,
value: String,
reason: String,
},
HashMismatch {
path: PathBuf,
expected: String,
actual: String,
},
Cancelled {
phase: String,
reason: String,
},
QueueFull {
pending: usize,
capacity: usize,
},
SubsystemError {
subsystem: &'static str,
source: Box<dyn Error + Send + Sync>,
},
DurabilityDisabled,
}Expand description
Unified error type covering all failure modes across the frankensearch search pipeline.
Every variant includes an actionable error message guiding the consumer toward resolution.
The TwoTierSearcher catches transient errors and degrades gracefully: fast embedding
failures can still yield lexical-only initial results when lexical retrieval is available,
RerankFailed skips reranking, and SearchTimeout yields initial results.
Only IndexNotFound and InvalidConfig prevent search from starting.
Variants§
An embedding model is not available (not compiled in, or model files missing).
EmbeddingFailed
Embedding inference failed for a given model.
ModelNotFound
Model files were not found at any searched path.
ModelLoadFailed
Model files exist but failed to load (corrupted, incompatible version, etc.).
Fields
IndexCorrupted
The vector index file is corrupted (bad magic, CRC mismatch, truncated).
IndexVersionMismatch
The FSVI file version does not match what this build expects.
DimensionMismatch
Query vector dimension does not match the index dimension.
Fields
IndexNotFound
No vector index file exists at the expected path.
QueryParseError
The query string could not be parsed.
SearchTimeout
A search phase exceeded its time budget.
FederatedInsufficientResponses
Federated search did not receive enough successful shard responses.
Fields
The reranking model is not available.
RerankFailed
Reranking inference failed.
Fields
Io(Error)
Wraps std::io::Error for file operations.
InvalidConfig
A configuration value is invalid.
Fields
HashMismatch
Downloaded or loaded file does not match expected hash.
Fields
Cancelled
Operation was cancelled via the asupersync structured concurrency protocol.
QueueFull
The embedding job queue is full.
SubsystemError
Wraps errors from optional subsystems (storage, durability, FTS5, etc.).
Always present in the enum regardless of feature flags, avoiding match-arm breakage across feature combinations.
Fields
DurabilityDisabled
A durability/repair feature was requested but is not compiled in.
Trait Implementations§
Source§impl Debug for SearchError
impl Debug for SearchError
Source§impl Display for SearchError
impl Display for SearchError
Source§impl Error for SearchError
impl Error for SearchError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<Error> for SearchError
impl From<Error> for SearchError
Source§fn from(source: Error) -> SearchError
fn from(source: Error) -> SearchError
Auto Trait Implementations§
impl Freeze for SearchError
impl !RefUnwindSafe for SearchError
impl Send for SearchError
impl Sync for SearchError
impl Unpin for SearchError
impl UnsafeUnpin for SearchError
impl !UnwindSafe for SearchError
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more