PackageTrack
Sign in Get early access

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
Release Pre-release

Releases

latest 21
  1. 0.23.2 19 Nov 2025
    Release notes

    Fixed

    • Clippy warnings for using &Option<&T> instead of Option<&T>.
    Open source →
    Release notes

    Fixed

    • Clippy warnings for using &Option<&T> instead of Option<&T>.
    Open source →
  2. 0.23.1 16 Nov 2025
    Release notes

    Fixed

    • Clippy warnings for unused variables in the new default implementation.
    Open source →
    Release notes

    Fixed

    • Clippy warnings for unused variables in the new default implementation.
    Open source →
  3. 0.23.0 20 Oct 2025
    Release notes

    Changed

    • Upgrae Rust edition to 2024.
    • [BREAKING] When default is an expression that uses previous fields,
      it'll receive them as reference.

    Added

    • default_where option to add generic bounds on default.
    • builder_type(attributes(...)) for adding attributes to the builder type
      (mainly for derive)

    Removed

    • [BREAKING] The Optional trait. This is an internal implementation
      detail, but some users may have relied on it for customized flows.
    Open source →
    Release notes

    Changed

    • Upgrae Rust edition to 2024.
    • [BREAKING] When default is an expression that uses previous fields, it'll receive them as reference.

    Added

    • default_where option to add generic bounds on default.
    • builder_type(attributes(...)) for adding attributes to the builder type (mainly for derive)

    Removed

    • [BREAKING] The Optional trait. This is an internal implementation detail, but some users may have relied on it for customized flows.
    Open source →
  4. 0.22.0 14 Sep 2025
    Release notes

    Added

    • New optional alternate 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,
    }
    Open source →
    Release notes

    Added

    • New optional alternate 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,
    }
    
    Open source →
  5. 0.21.2 21 Aug 2025
    Release notes

    Fixed

    • Recognize TypeGroup when checking for Option.
    Open source →
    Release notes

    Fixed

    • Recognize TypeGroup when checking for Option.
    Open source →
  6. 0.21.1 12 Aug 2025
    Release notes

    Fixed

    • Strip raw ident prefix from base method name before assembling prefixed/suffixed fallback method names
    Open source →
    Release notes

    Fixed

    • Strip raw ident prefix from base method name before assembling prefixed/suffixed fallback method names
    Open source →
  7. 0.21.0 20 Mar 2025
    Release notes

    Added

    • Added ignore_invalid option to strip_option to skip stripping for non-Option fields
    • Added fallback_prefix and fallback_suffix options to strip_option for customizing fallback method names
    • Added support for field defaults with strip_option and its fallback options

    Changed

    • Improved handling of strip_option to work better with field defaults
    • Made strip_option more flexible with non-Option fields when ignore_invalid is set
    Open source →
    Release notes

    Added

    • Added ignore_invalid option to strip_option to skip stripping for non-Option fields
    • Added fallback_prefix and fallback_suffix options to strip_option for customizing fallback method names
    • Added support for field defaults with strip_option and its fallback options

    Changed

    • Improved handling of strip_option to work better with field defaults
    • Made strip_option more flexible with non-Option fields when ignore_invalid is set
    Open source →
  8. 0.20.1 14 Mar 2025
    Release notes

    Fixed

    • Fix mutator with type parameter using associated type (see issue #157)
    Open source →
    Release notes

    Fixed

    • Fix mutator with type parameter using associated type (see issue #157)
    Open source →
  9. 0.20.0 22 Aug 2024
    Release notes

    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 the bool value to the builder struct.
    Open source →
    Release notes

    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 the bool value to the builder struct.
    Open source →
  10. 0.19.1 14 Jul 2024
    Release notes

    Fixed

    • Fix mutators for generic fields (see issue #149)
    Open source →
    Release notes

    Fixed

    • Fix mutators for generic fields (see issue #149)
    Open source →
  11. 0.19.0 15 Jun 2024
    Release notes

    Added

    • Use fields' doc comments for the setters.
    Open source →
  12. 0.18.2 16 Apr 2024
    Release notes

    Fixed

    • Also add the licenses to the macro crate.
    Open source →
  13. 0.18.1 16 Jan 2024
    Release notes

    Fixed

    • Add #[allow(clippy::no_effect_underscore_binding)] to generated methods that need to destructure intermediate builder state.
    • Use a proper OR syntax for the dual license.
    Open source →
  14. 0.18.0 19 Oct 2023
    Release notes

    Fixed

    • ?Sized generic parameters are now supported.
    Open source →
  15. 0.17.0 15 Oct 2023
    Release notes

    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 with mutators
    • mutable_during_default_resolution to allow default expression mutate previous fields.

    Fixed

    • Add support for paths with angle brackets (see PR #122 )
    Open source →
  16. 0.16.2 21 Sep 2023
    Release notes

    Fixed

    • Use generics with the constructor in build method (see issue #118)
    Open source →
  17. 0.16.1 18 Sep 2023
    Release notes

    Fixed

    • Add #[allow(clippy::exhaustive_enums)] to generated empty enums used for error "reporting" (see issue #112)
    • Add #[automatically_derived] to generated impls (see issue #114)
    • Add #[allow(clippy::used_underscore_binding)] to build method and setter methods (see issue #113)
    Open source →
  18. 0.16.0 26 Aug 2023
    Release notes

    Added

    • #[builder(crate_module_path = ...)] for overcoming cases where the derive macro is used in another crate's macro (see issue #109)
    Open source →
  19. 0.15.2 03 Aug 2023
    Release notes

    Fixed

    • Fix const generics generating "empty" entries in some lists, resulting in consecutive commas (see issue #106)
    Open source →
  20. 0.15.1 10 Jul 2023
    Release notes

    Fixed

    • no-std build.
    Open source →
  21. 0.15.0 05 Jul 2023
    Release notes

    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 - TypedBuilder generated code itself does trigger the deprecation warning, and instead the setter for that field now does.
    • The "fake" build method 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(), or set_z_value().
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive