typed-builder-macro
Compile-time type-checked builder derive
0.23.2
72M downloads/mo
#980 most downloaded on crates.io
idanarye/rust-typed-builder
What this package is like to depend on
Last release 9 months ago
19 Nov 2025
Release timing varies
gaps range from 8 days to 7 months
Nearly every release is documented
notes for 21 of 21 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
21 releases · first in 2023
4 releases in the last 12 months
see the full history below
Release timeline
21 releases · Jul 2023 to Nov 2025
2024
2025
2026
Releases
latest 21-
0.23.219 Nov 2025 -
0.23.116 Nov 2025Release notes
Open source →Fixed
- Clippy warnings for unused variables in the new default implementation.
Release notes
Open source →Fixed
- Clippy warnings for unused variables in the new default implementation.
-
0.23.020 Oct 2025Release notes
Open source →Changed
- Upgrae Rust edition to 2024.
- [BREAKING] When
defaultis an expression that uses previous fields,
it'll receive them as reference.
Added
default_whereoption to add generic bounds ondefault.builder_type(attributes(...))for adding attributes to the builder type
(mainly forderive)
Removed
- [BREAKING] The
Optionaltrait. This is an internal implementation
detail, but some users may have relied on it for customized flows.
Release notes
Open source →Changed
- Upgrae Rust edition to 2024.
- [BREAKING] When
defaultis an expression that uses previous fields, it'll receive them as reference.
Added
default_whereoption to add generic bounds ondefault.builder_type(attributes(...))for adding attributes to the builder type (mainly forderive)
Removed
- [BREAKING] The
Optionaltrait. This is an internal implementation detail, but some users may have relied on it for customized flows.
-
0.22.014 Sep 2025Release notes
Open source →Added
- New optional alternate
transformsyntax using a full fn, to allow support for custom lifetimes, generics and a where clause to custom builder method.
Example:
#[derive(TypedBuilder)] struct Foo { #[builder( setter( fn transform<'a, M>(value: impl IntoValue<'a, String, M>) -> String where M: std::fmt::Display { value.into_value() }, ) )] s: String, }
Release notes
Open source →Added
- New optional alternate
transformsyntax using a full fn, to allow support for custom lifetimes, generics and a where clause to custom builder method.
Example:
#[derive(TypedBuilder)] struct Foo { #[builder( setter( fn transform<'a, M>(value: impl IntoValue<'a, String, M>) -> String where M: std::fmt::Display { value.into_value() }, ) )] s: String, } - New optional alternate
-
0.21.221 Aug 2025 -
0.21.112 Aug 2025Release notes
Open source →Fixed
- Strip raw ident prefix from base method name before assembling prefixed/suffixed fallback method names
Release notes
Open source →Fixed
- Strip raw ident prefix from base method name before assembling prefixed/suffixed fallback method names
-
0.21.020 Mar 2025Release notes
Open source →Added
- Added
ignore_invalidoption tostrip_optionto skip stripping for non-Option fields - Added
fallback_prefixandfallback_suffixoptions tostrip_optionfor customizing fallback method names - Added support for field defaults with
strip_optionand its fallback options
Changed
- Improved handling of
strip_optionto work better with field defaults - Made
strip_optionmore flexible with non-Option fields whenignore_invalidis set
Release notes
Open source →Added
- Added
ignore_invalidoption tostrip_optionto skip stripping for non-Option fields - Added
fallback_prefixandfallback_suffixoptions tostrip_optionfor customizing fallback method names - Added support for field defaults with
strip_optionand its fallback options
Changed
- Improved handling of
strip_optionto work better with field defaults - Made
strip_optionmore flexible with non-Option fields whenignore_invalidis set
- Added
-
0.20.114 Mar 2025Release notes
Open source →Fixed
- Fix mutator with type parameter using associated type (see issue #157)
Release notes
Open source →Fixed
- Fix mutator with type parameter using associated type (see issue #157)
-
0.20.022 Aug 2024Release notes
Open source →Added
- Add
#[builder(setter(strip_option(fallback = field_opt)))]to add a fallback unstripped method to the builder struct. - Add
#[builder(setter(strip_bool(fallback = field_bool)))]to add a fallback setter that takes theboolvalue to the builder struct.
Release notes
Open source →Added
- Add
#[builder(setter(strip_option(fallback = field_opt)))]to add a fallback unstripped method to the builder struct. - Add
#[builder(setter(strip_bool(fallback = field_bool)))]to add a fallback setter that takes theboolvalue to the builder struct.
- Add
-
0.19.114 Jul 2024 -
0.19.015 Jun 2024 -
0.18.216 Apr 2024 -
0.18.116 Jan 2024Release notes
Open source →Fixed
- Add
#[allow(clippy::no_effect_underscore_binding)]to generated methods that need to destructure intermediate builder state. - Use a proper
ORsyntax for the dual license.
- Add
-
0.18.019 Oct 2023 -
0.17.015 Oct 2023Release notes
Open source →Changed
- Internal refactor of attribute parsing - results in better error messages and easier proces for adding new settings.
Added
#[builder(mutators(...))]to generate functions on builder to mutate fields#[builder(via_mutator)]on fields to allow defining fields initialized during::builder()for use withmutatorsmutable_during_default_resolutionto allowdefaultexpression mutate previous fields.
Fixed
- Add support for paths with angle brackets (see PR #122 )
-
0.16.221 Sep 2023Release notes
Open source →Fixed
- Use generics with the constructor in
buildmethod (see issue #118)
- Use generics with the constructor in
-
0.16.118 Sep 2023Release notes
Open source →Fixed
- Add
#[allow(clippy::exhaustive_enums)]to generated empty enums used for error "reporting" (see issue #112) - Add
#[automatically_derived]to generatedimpls (see issue #114) - Add
#[allow(clippy::used_underscore_binding)]to build method and setter methods (see issue #113)
- Add
-
0.16.026 Aug 2023Release notes
Open source →Added
#[builder(crate_module_path = ...)]for overcoming cases where the derive macro is used in another crate's macro (see issue #109)
-
0.15.203 Aug 2023Release notes
Open source →Fixed
- Fix const generics generating "empty" entries in some lists, resulting in consecutive commas (see issue #106)
-
0.15.110 Jul 2023 -
0.15.005 Jul 2023Release notes
Open source →Changed
- [BREAKING] Split the derive macro out to a separate procmacro crate. This is considered a breaking change because reexporting and/or renmaing the crate can now prevent the generated code from finding the types it needs (see issue #101)
Fixed
- Marking a field as
#[deprecated]now behaves properly -TypedBuildergenerated code itself does trigger the deprecation warning, and instead the setter for that field now does. - The "fake"
buildmethod when required fields are not provided now returns the never type ("!"). Refer to PR #97 for more thorough explanation.
Added
- Support for setter method prefixes and suffixes
#[builder(field_defaults(setter(prefix = "...", suffix = "...")))]. This either prepends or appends the provided string to the setter method. This allows method names like:set_x(),with_y(), orset_z_value().