From f35b3d29d8ed521f69522aa0fda594f277c72b5c Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 2 Aug 2022 17:30:21 +0200 Subject: refactor: move creating a dependency trace to it's own function --- macros/src/injectable_impl.rs | 23 ++++++----------------- src/dependency_trace.rs | 20 ++++++++++++++++++++ src/lib.rs | 3 +++ 3 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 src/dependency_trace.rs diff --git a/macros/src/injectable_impl.rs b/macros/src/injectable_impl.rs index b24749c..3bd7113 100644 --- a/macros/src/injectable_impl.rs +++ b/macros/src/injectable_impl.rs @@ -86,26 +86,15 @@ impl InjectableImpl if dependency_history.contains(&self_type_name) { dependency_history.push(self_type_name); - let dependency_trace = dependency_history - .iter() - .map(|dep| { - if dep == &self_type_name { - format!("\x1b[1m{}\x1b[22m", dep) - } else { - dep.to_string() - } - }) - .collect::>() - .join(" -> "); - return Err( report!(ResolveError) - .attach_printable( - format!( - "Detected circular dependencies. {}", - dependency_trace.clone(), + .attach_printable(format!( + "Detected circular dependencies. {}", + syrette::dependency_trace::create_dependency_trace( + dependency_history.as_slice(), + self_type_name ) - ) + )) ); } diff --git a/src/dependency_trace.rs b/src/dependency_trace.rs new file mode 100644 index 0000000..d46b762 --- /dev/null +++ b/src/dependency_trace.rs @@ -0,0 +1,20 @@ +#![allow(clippy::module_name_repetitions)] + +#[must_use] +pub fn create_dependency_trace( + dependency_history: &[&'static str], + err_dependency: &'static str, +) -> String +{ + dependency_history + .iter() + .map(|dep| { + if dep == &err_dependency { + format!("\x1b[1m{}\x1b[22m", dep) + } else { + (*dep).to_string() + } + }) + .collect::>() + .join(" -> ") +} diff --git a/src/lib.rs b/src/lib.rs index 4d1ce78..a03675b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,6 +19,9 @@ pub use syrette_macros::*; #[doc(hidden)] pub mod castable_factory; +#[doc(hidden)] +pub mod dependency_trace; + #[doc(hidden)] pub mod libs; -- cgit v1.2.3-18-g5258