Skip to main content

kardo_core/
error.rs

1//! Unified error type for kardo-core operations.
2
3use crate::db::DbError;
4use crate::git::GitError;
5use crate::scanner::ScanError;
6
7/// Top-level error type for kardo-core operations.
8///
9/// Composes module-specific error types into a single enum for
10/// consumers who want one error type to handle.
11#[derive(Debug, thiserror::Error)]
12pub enum KardoError {
13    /// Database error.
14    #[error("database: {0}")]
15    Db(#[from] DbError),
16
17    /// Git repository error.
18    #[error("git: {0}")]
19    Git(#[from] GitError),
20
21    /// File scanning error.
22    #[error("scan: {0}")]
23    Scan(#[from] ScanError),
24
25    /// IO error.
26    #[error("io: {0}")]
27    Io(#[from] std::io::Error),
28
29    /// Configuration error.
30    #[error("config: {0}")]
31    Config(String),
32
33    /// Generic error for uncategorized failures.
34    #[error("{0}")]
35    Other(String),
36}
37
38/// Allow `String` errors to be converted into `KardoError::Other` via `?`.
39impl From<String> for KardoError {
40    fn from(s: String) -> Self {
41        KardoError::Other(s)
42    }
43}
44
45/// Allow `&str` errors to be converted into `KardoError::Other` via `?`.
46impl From<&str> for KardoError {
47    fn from(s: &str) -> Self {
48        KardoError::Other(s.to_string())
49    }
50}
51
52/// Convenience Result type alias for kardo-core.
53pub type KardoResult<T> = Result<T, KardoError>;