From 2a79a0ae359273c6f3c0dcc2e14b7d3b87f9cfbc Mon Sep 17 00:00:00 2001 From: Ted Driggs Date: Tue, 16 Jul 2024 05:50:28 -0700 Subject: [PATCH] Allow setting build_fn-specific pattern This allows a builder to have mutating setters and an owned build method, removing the need to do clones during construction. Fixes #321 --- derive_builder_core/src/macro_options/darling_opts.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/derive_builder_core/src/macro_options/darling_opts.rs b/derive_builder_core/src/macro_options/darling_opts.rs index aa0f650..b1124a3 100644 --- a/derive_builder_core/src/macro_options/darling_opts.rs +++ b/derive_builder_core/src/macro_options/darling_opts.rs @@ -137,6 +137,7 @@ pub struct BuildFn { skip: bool, name: Ident, validate: Option, + pattern: Option, #[darling(flatten)] visibility: VisibilityAttr, /// Either the path to an existing error type that the build method should return or a meta @@ -189,6 +190,7 @@ impl Default for BuildFn { BuildFn { skip: false, name: Ident::new("build", Span::call_site()), + pattern: None, validate: None, visibility: Default::default(), error: None, @@ -701,7 +703,7 @@ impl Options { enabled: !self.build_fn.skip, ident: &self.build_fn.name, visibility: self.build_method_vis(), - pattern: self.pattern, + pattern: self.build_fn.pattern.unwrap_or(self.pattern), target_ty: &self.ident, target_ty_generics: Some(ty_generics), error_ty: self.builder_error_ident(),