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>;