diff --git a/derive/src/utils.rs b/derive/src/utils.rs index 0fdbeb77..796a9307 100644 --- a/derive/src/utils.rs +++ b/derive/src/utils.rs @@ -136,9 +136,9 @@ pub fn generate_guards( .into()); } if let NestedMeta::Meta(rule) = &args.nested[0] { - return generate_guards(crate_name, rule); + generate_guards(crate_name, rule) } else { - return Err(Error::new_spanned(&args.nested[0], "Invalid rule.").into()); + Err(Error::new_spanned(&args.nested[0], "Invalid rule.").into()) } } "and" => { diff --git a/src/guard.rs b/src/guard.rs index 16a5130b..bcc25e1e 100644 --- a/src/guard.rs +++ b/src/guard.rs @@ -35,7 +35,8 @@ pub struct And(A, B); #[async_trait::async_trait] impl Guard for And { async fn check(&self, ctx: &Context<'_>) -> Result<()> { - self.0.check(ctx).await.and(self.1.check(ctx).await) + let second_result = self.1.check(ctx).await; + self.0.check(ctx).await.and(second_result) } } @@ -45,7 +46,8 @@ pub struct Or(A, B); #[async_trait::async_trait] impl Guard for Or { async fn check(&self, ctx: &Context<'_>) -> Result<()> { - self.0.check(ctx).await.or(self.1.check(ctx).await) + let second_result = self.1.check(ctx).await; + self.0.check(ctx).await.or(second_result) } }