Skip to main content

gradatum_storage/
error.rs

1//! Erreurs de la couche storage.
2//!
3//! Toutes les erreurs sont typées via `thiserror` — pas de `Box<dyn Error>` en lib publique.
4//! Règle Rust-grade : typage fort, propagation explicite.
5
6use std::path::PathBuf;
7use thiserror::Error;
8
9/// Erreur produite par les opérations de stockage (`Storage` trait et implémentations).
10///
11/// `StorageError::Core` encapsule les erreurs `GradatumError` remontant du check NFS (C11).
12#[derive(Debug, Error)]
13pub enum StorageError {
14    /// Erreur I/O générique (statfs, lecture, écriture, permissions).
15    #[error("io: {0}")]
16    Io(String),
17
18    /// Ressource introuvable au chemin indiqué.
19    #[error("not found: {0}")]
20    NotFound(String),
21
22    /// Chemin invalide (non-UTF-8 ou hors racine autorisée).
23    #[error("invalid path: {0:?}")]
24    InvalidPath(PathBuf),
25
26    /// Erreur retournée par le backend OpenDAL.
27    #[error("opendal: {0}")]
28    OpenDal(String),
29
30    /// Erreur provenant de `gradatum-core` (ex. `GradatumError::VaultOnNfs` — caveat C11).
31    #[error("core: {0}")]
32    Core(#[from] gradatum_core::error::GradatumError),
33}