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}