NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #984 most downloaded on crates.io
Compile-time type-checked builder derive
Last release 10 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
One column per quarter.
Clippy warnings for using &Option<&T> instead of Option<&T> .
&Option<&T> instead of Option<&T>.Clippy warnings for unused variables in the new default implementation.
[ BREAKING ] When default is an expression that uses previous fields, it'll receive them as reference.
default is an expression that uses previous fields,default_where option to add generic bounds on default.builder_type(attributes(...)) for adding attributes to the builder typederive)Optional trait. This is an internal implementationNew optional alternate transform syntax using a full fn, to allow support for custom lifetimes, generics and a where clause to custom builder method.
transform syntax 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,
}Recognize TypeGroup when checking for Option .
TypeGroup when checking for Option.Strip raw ident prefix from base method name before assembling prefixed/suffixed fallback method names
Added ignore_invalid option to strip_option to skip stripping for non-Option fields
ignore_invalid option to strip_option to skip stripping for non-Option fieldsfallback_prefix and fallback_suffix options to strip_option for customizing fallback method namesstrip_option and its fallback optionsstrip_option to work better with field defaultsstrip_option more flexible with non-Option fields when ignore_invalid is setFix mutator with type parameter using associated type (see issue #157 )
Add #[builder(setter(strip_option(fallback = field_opt)))] to add a fallback unstripped method to the builder struct.
#[builder(setter(strip_option(fallback = field_opt)))] to add a fallback unstripped method to the builder struct.#[builder(setter(strip_bool(fallback = field_bool)))] to add a fallback setter that takes the bool value to the builder struct.Fix mutators for generic fields (see issue #149 )
Use fields' doc comments for the setters.
Also add the licenses to the macro crate.
Add #[allow(clippy::no_effect_underscore_binding)] to generated methods that need to destructure intermediate builder state.
#[allow(clippy::no_effect_underscore_binding)] to generated methods
that need to destructure intermediate builder state.OR syntax for the dual license.?Sized generic parameters are now supported.
?Sized generic parameters are now supported.Internal refactor of attribute parsing - results in better error messages and easier proces for adding new settings.
#[builder(mutators(...))] to generate functions on builder to mutate fields#[builder(via_mutator)] on fields to allow defining fields initialized
during ::builder() for use with mutatorsmutable_during_default_resolution to allow default expression mutate
previous fields.Use generics with the constructor in build method (see issue #118)
build method (see issue #118)Add #[allow(clippy::exhaustive_enums)] to generated empty enums used for error "reporting" (see issue #112)
#[allow(clippy::exhaustive_enums)] to generated empty enums used for
error "reporting" (see issue #112)#[automatically_derived] to generated impls (see issue #114)#[allow(clippy::used_underscore_binding)] to build method and setter
methods (see issue #113)### Added - #[builder(crate_module_path = ...)] for overcoming cases where the derive macro is used in another crate's macro (see issue #109)
#[builder(crate_module_path = ...)] for overcoming cases where the derive
macro is used in another crate's macro (see issue #109)Fix const generics generating "empty" entries in some lists, resulting in consecutive commas (see issue #106)
### Fixed - no-std build.
[BREAKING] Split the derive macro out to a separate procmacro crate. This is considered a breaking change because reexporting and/or renmaing the crat…
#[deprecated] now behaves properly - TypedBuilder
generated code itself does trigger the deprecation warning, and instead the
setter for that field now does.build method when required fields are not provided now returns
the never type ("!"). Refer to PR #97 for more thorough explanation.#[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(), or set_z_value().Your coding agent can read these notes before it upgrades. Set up the MCP server →