diff options
Diffstat (limited to 'src/errors/injectable.rs')
-rw-r--r-- | src/errors/injectable.rs | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/errors/injectable.rs b/src/errors/injectable.rs index 63afa11..4b9af96 100644 --- a/src/errors/injectable.rs +++ b/src/errors/injectable.rs @@ -1,20 +1,33 @@ -//! Error types for structs implementing Injectable. +#![allow(clippy::module_name_repetitions)] +//! Error types for structs that implement [`Injectable`]. +//! +//! [`Injectable`]: crate::interfaces::injectable::Injectable -use core::fmt; -use std::fmt::{Display, Formatter}; +use super::di_container::DIContainerError; -use error_stack::Context; +/// Error type for structs that implement [`Injectable`]. +/// +/// [`Injectable`]: crate::interfaces::injectable::Injectable +#[derive(thiserror::Error, Debug)] +pub enum InjectableError +{ + /// Failed to resolve dependencies. + #[error("Failed to resolve a dependency of '{affected}'")] + ResolveFailed + { + /// The reason for the problem. + #[source] + reason: Box<DIContainerError>, -/// Error for when a injectable struct fails to be resolved. -#[derive(Debug)] -pub struct ResolveError; + /// The affected injectable type. + affected: &'static str, + }, -impl Display for ResolveError -{ - fn fmt(&self, fmt: &mut Formatter<'_>) -> fmt::Result + /// Detected circular dependencies. + #[error("Detected circular dependencies. {dependency_trace}")] + DetectedCircular { - fmt.write_str("Failed to resolve injectable struct") - } + /// A visual trace of dependencies. + dependency_trace: String, + }, } - -impl Context for ResolveError {} |