From 6ac956e91174c349f8c8428c5bacba8872c57073 Mon Sep 17 00:00:00 2001
From: l0r1s <contact@lorismoulin.com>
Date: Mon, 19 Jun 2023 21:52:39 +0100
Subject: [PATCH] feat: replaced boxed errors in ParachainConfigBuilder with
 anyhow

---
 crates/configuration/src/parachain.rs | 32 ++++++++++++++++-----------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/crates/configuration/src/parachain.rs b/crates/configuration/src/parachain.rs
index 837a95b..cb4a4c2 100644
--- a/crates/configuration/src/parachain.rs
+++ b/crates/configuration/src/parachain.rs
@@ -115,7 +115,7 @@ states! {
 #[derive(Debug)]
 pub struct ParachainConfigBuilder<S> {
     config: ParachainConfig,
-    errors: Vec<Box<dyn Error>>,
+    errors: Vec<anyhow::Error>,
     _state: PhantomData<S>,
 }
 
@@ -145,7 +145,7 @@ impl Default for ParachainConfigBuilder<Initial> {
 impl<A> ParachainConfigBuilder<A> {
     fn transition<B>(
         config: ParachainConfig,
-        errors: Vec<Box<dyn Error>>,
+        errors: Vec<anyhow::Error>,
     ) -> ParachainConfigBuilder<B> {
         ParachainConfigBuilder {
             config,
@@ -196,7 +196,7 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
     pub fn with_chain<T>(self, chain: T) -> Self
     where
         T: TryInto<Chain>,
-        T::Error: Error + 'static,
+        T::Error: Error + Send + Sync + 'static,
     {
         match chain.try_into() {
             Ok(chain) => Self::transition(
@@ -208,7 +208,7 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
             ),
             Err(error) => Self::transition(
                 self.config,
-                merge_errors(self.errors, FieldError::Chain(error).into()),
+                merge_errors(self.errors, FieldError::Chain(error.into()).into()),
             ),
         }
     }
@@ -246,7 +246,7 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
     pub fn with_genesis_wasm_generator<T>(self, command: T) -> Self
     where
         T: TryInto<Command>,
-        T::Error: Error + 'static,
+        T::Error: Error + Send + Sync + 'static,
     {
         match command.try_into() {
             Ok(command) => Self::transition(
@@ -258,7 +258,10 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
             ),
             Err(error) => Self::transition(
                 self.config,
-                merge_errors(self.errors, FieldError::GenesisWasmGenerator(error).into()),
+                merge_errors(
+                    self.errors,
+                    FieldError::GenesisWasmGenerator(error.into()).into(),
+                ),
             ),
         }
     }
@@ -276,7 +279,7 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
     pub fn with_genesis_state_generator<T>(self, command: T) -> Self
     where
         T: TryInto<Command>,
-        T::Error: Error + 'static,
+        T::Error: Error + Send + Sync + 'static,
     {
         match command.try_into() {
             Ok(command) => Self::transition(
@@ -288,7 +291,10 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
             ),
             Err(error) => Self::transition(
                 self.config,
-                merge_errors(self.errors, FieldError::GenesisStateGenerator(error).into()),
+                merge_errors(
+                    self.errors,
+                    FieldError::GenesisStateGenerator(error.into()).into(),
+                ),
             ),
         }
     }
@@ -316,7 +322,7 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
     pub fn with_bootnodes_addresses<T>(self, bootnodes_addresses: Vec<T>) -> Self
     where
         T: TryInto<Multiaddr> + ToString + Copy,
-        T::Error: Error + 'static,
+        T::Error: Error + Send + Sync + 'static,
     {
         let mut addrs = vec![];
         let mut errors = vec![];
@@ -324,9 +330,9 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
         for (index, addr) in bootnodes_addresses.into_iter().enumerate() {
             match addr.try_into() {
                 Ok(addr) => addrs.push(addr),
-                Err(error) => {
-                    errors.push(FieldError::BootnodesAddress(index, addr.to_string(), error).into())
-                },
+                Err(error) => errors.push(
+                    FieldError::BootnodesAddress(index, addr.to_string(), error.into()).into(),
+                ),
             }
         }
 
@@ -364,7 +370,7 @@ impl ParachainConfigBuilder<WithAtLeastOneCollator> {
         }
     }
 
-    pub fn build(self) -> Result<ParachainConfig, (ParaId, Vec<Box<dyn Error>>)> {
+    pub fn build(self) -> Result<ParachainConfig, (ParaId, Vec<anyhow::Error>)> {
         if !self.errors.is_empty() {
             return Err((self.config.id, self.errors));
         }
-- 
GitLab