PackageTrack
Sign in Get early access

bitflags

A macro to generate structures which behave like bitflags.

2.13.1 1.7B downloads/mo #4 most downloaded on crates.io bitflags/bitflags

What this package is like to depend on

Last release 1 months ago

15 Jul 2026

Ships fairly regularly

a new release about every 2 months

Most releases are documented

notes for 44 of 53 stable releases

7 versions withdrawn

withdrawn after publishing

12 years old

63 releases · first in 2015

8 releases in the last 12 months

see the full history below

Release timeline

63 releases · Jan 2015 to Jul 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 63
  1. 2.13.1 15 Jul 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 2.13.0...2.13.1

    Open source →
    Release notes

    What's Changed

    • Lower the LLVM IR output of the generated output by @bolshoytoster in https://github.com/bitflags/bitflags/pull/492

    New Contributors

    • @bolshoytoster made their first contribution in https://github.com/bitflags/bitflags/pull/492

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.13.0...2.13.1

    Open source →
    Release notes

    2.13.1 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. 2.13.0 05 Jun 2026
    Release notes

    What's Changed

    • add MyFlags::Abc::iter_equal_names() method by @ssrlive in #489

    Full Changelog: 2.12.1...2.13.0

    Open source →
    Release notes

    What's Changed

    • add MyFlags::Abc::iter_equal_names() method by @ssrlive in https://github.com/bitflags/bitflags/pull/489

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.12.1...2.13.0

    Open source →
    Release notes

    2.13.0

    Compare

    Choose a tag to compare

    Open source →
  3. 2.12.1 02 Jun 2026
    Release notes

    What's Changed

    • Rework the #[flag_name] feature and re-stabilize as #[bitflags(flag_name)] by @KodrAus in #487
    • Prepare for 2.12.1 release by @KodrAus in #488

    Full Changelog: 2.12.0...2.12.1

    Open source →
    Release notes

    What's Changed

    • Rework the #[flag_name] feature and re-stabilize as #[bitflags(flag_name)] by @KodrAus in https://github.com/bitflags/bitflags/pull/487

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.12.0...2.12.1

    Open source →
    Release notes

    2.12.1

    Compare

    Choose a tag to compare

    Open source →
  4. 2.12.0 29 May 2026 withdrawn
    Release notes

    Yanked

    This release has been yanked because the #[flag_name] processing noticeably increases macro recursion, hitting the default limit in cases that are already close to it.

    What's Changed

    • Add a custom #[flag_name] attribute by @KodrAus in #483
    • Add an all_named ctor for filtering out catch-all flags by @KodrAus in #484
    • Prepare for 2.12.0 release by @KodrAus in #485

    Full Changelog: 2.11.1...2.12.0

    Open source →
    Release notes

    Yanked

    This release has been yanked because the #[flag_name] processing noticeably increases macro recursion, hitting the default limit in cases that are already close to it.

    What's Changed

    • Add a custom #[flag_name] attribute by @KodrAus in https://github.com/bitflags/bitflags/pull/483
    • Add an all_named ctor for filtering out catch-all flags by @KodrAus in https://github.com/bitflags/bitflags/pull/484

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.11.1...2.12.0

    Open source →
    Release notes

    2.12.0

    Compare

    Choose a tag to compare

    Open source →
  5. 2.11.1 14 Apr 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 2.11.0...2.11.1

    Open source →
    Release notes

    What's Changed

    • Bless compile-fail tests for current beta by @DanielEScherzer in https://github.com/bitflags/bitflags/pull/478
    • example_generated.rs: add missing third slash for doc comment by @DanielEScherzer in https://github.com/bitflags/bitflags/pull/477
    • Clarify self and other in method docs by @KodrAus in https://github.com/bitflags/bitflags/pull/481

    New Contributors

    • @DanielEScherzer made their first contribution in https://github.com/bitflags/bitflags/pull/478

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.11.0...2.11.1

    Open source →
    Release notes

    2.11.1

    Compare

    Choose a tag to compare

    Open source →
  6. 2.11.0 14 Feb 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 2.10.0...2.11.0

    Open source →
    Release notes

    What's Changed

    • Fix use of Result in macro output by @james7132 in https://github.com/bitflags/bitflags/pull/462
    • Add methods to get the known/unknown bits from a flags value by @WaterWhisperer in https://github.com/bitflags/bitflags/pull/473

    New Contributors

    • @james7132 made their first contribution in https://github.com/bitflags/bitflags/pull/462
    • @WaterWhisperer made their first contribution in https://github.com/bitflags/bitflags/pull/473

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.10.0...2.11.0

    Open source →
    Release notes

    2.11.0

    Compare

    Choose a tag to compare

    Open source →
  7. 2.10.0 19 Oct 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 2.9.4...2.10.0

    Open source →
    Release notes

    What's Changed

    • Implement iterator for all named flags by @ssrlive in https://github.com/bitflags/bitflags/pull/465
    • Depend on serde_core instead of serde by @KodrAus in https://github.com/bitflags/bitflags/pull/467

    New Contributors

    • @ssrlive made their first contribution in https://github.com/bitflags/bitflags/pull/465

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0

    Open source →
    Release notes

    2.10.0

    Compare

    Choose a tag to compare

    Open source →
  8. 2.9.4 02 Sep 2025
    Release notes

    What's Changed

    Full Changelog: 2.9.3...2.9.4

    Open source →
    Release notes

    What's Changed

    • Add Cargo features to readme by @KodrAus in https://github.com/bitflags/bitflags/pull/460

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.9.3...2.9.4

    Open source →
    Release notes

    2.9.4

    Compare

    Choose a tag to compare

    Open source →
  9. 2.9.3 22 Aug 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 2.9.2...2.9.3

    Open source →
    Release notes

    What's Changed

    • Streamline generated code by @nnethercote in https://github.com/bitflags/bitflags/pull/458

    New Contributors

    • @nnethercote made their first contribution in https://github.com/bitflags/bitflags/pull/458

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.9.2...2.9.3

    Open source →
    Release notes

    2.9.3

    Compare

    Choose a tag to compare

    Open source →
  10. 2.9.2 16 Aug 2025
    Release notes

    What's Changed

    Full Changelog: 2.9.1...2.9.2

    Open source →
    Release notes

    What's Changed

    • Fix difference in the spec by @KodrAus in https://github.com/bitflags/bitflags/pull/446
    • Fix up inaccurate docs on bitflags_match by @KodrAus in https://github.com/bitflags/bitflags/pull/453
    • Remove rustc internal crate feature by @KodrAus in https://github.com/bitflags/bitflags/pull/454

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.9.1...2.9.2

    Open source →
    Release notes

    2.9.2

    Compare

    Choose a tag to compare

    Open source →
  11. 2.9.1 15 May 2025
    Release notes

    What's Changed

    • Document Cargo features by @KodrAus in https://github.com/bitflags/bitflags/pull/444

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.9.0...2.9.1

    Open source →
  12. 2.9.0 01 Mar 2025
    Release notes

    What's Changed

    • Flags trait: add clear(&mut self) method by @wysiwys in https://github.com/bitflags/bitflags/pull/437
    • Fix up UI tests by @KodrAus in https://github.com/bitflags/bitflags/pull/438

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.8.0...2.9.0

    Open source →
  13. 2.8.0 15 Jan 2025
    Release notes

    What's Changed

    • feat(core): Add bitflags_match macro for bitflag matching by @YuniqueUnic in https://github.com/bitflags/bitflags/pull/423
    • Finalize bitflags_match by @KodrAus in https://github.com/bitflags/bitflags/pull/431

    New Contributors

    • @YuniqueUnic made their first contribution in https://github.com/bitflags/bitflags/pull/423

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.7.0...2.8.0

    Open source →
  14. 2.7.0 10 Jan 2025
    Release notes

    What's Changed

    • Fix clippy::doc_lazy_continuation lints by @waywardmonkeys in https://github.com/bitflags/bitflags/pull/414
    • Run clippy on extra features in CI. by @waywardmonkeys in https://github.com/bitflags/bitflags/pull/415
    • Fix CI: trybuild refresh, allow some clippy restrictions. by @waywardmonkeys in https://github.com/bitflags/bitflags/pull/417
    • Update zerocopy version in example by @KodrAus in https://github.com/bitflags/bitflags/pull/422
    • Add method to check if unknown bits are set by @wysiwys in https://github.com/bitflags/bitflags/pull/426
    • Update error messages by @KodrAus in https://github.com/bitflags/bitflags/pull/427
    • Add truncate(&mut self) method to unset unknown bits by @wysiwys in https://github.com/bitflags/bitflags/pull/428
    • Update error messages by @KodrAus in https://github.com/bitflags/bitflags/pull/429

    New Contributors

    • @wysiwys made their first contribution in https://github.com/bitflags/bitflags/pull/426

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.6.0...2.7.0

    Open source →
  15. 2.6.0 24 Jun 2024
    Release notes

    What's Changed

    • Sync CHANGELOG.md with github release notes by @dextero in https://github.com/bitflags/bitflags/pull/402
    • Update error messages and zerocopy by @KodrAus in https://github.com/bitflags/bitflags/pull/403
    • Bump minimum declared versions of dependencies by @dextero in https://github.com/bitflags/bitflags/pull/404
    • chore(deps): bump serde_derive and bytemuck versions by @joshka in https://github.com/bitflags/bitflags/pull/405
    • add OSFF Scorecard workflow by @KodrAus in https://github.com/bitflags/bitflags/pull/396
    • Update stderr messages by @KodrAus in https://github.com/bitflags/bitflags/pull/408
    • Fix typo by @waywardmonkeys in https://github.com/bitflags/bitflags/pull/410
    • Allow specifying outer attributes in impl mode by @KodrAus in https://github.com/bitflags/bitflags/pull/411

    New Contributors

    • @dextero made their first contribution in https://github.com/bitflags/bitflags/pull/402
    • @joshka made their first contribution in https://github.com/bitflags/bitflags/pull/405
    • @waywardmonkeys made their first contribution in https://github.com/bitflags/bitflags/pull/410

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0

    Open source →
  16. 2.5.0 19 Mar 2024
    Release notes

    What's Changed

    • Derive Debug for Flag<B> by @tgross35 in https://github.com/bitflags/bitflags/pull/398
    • Support truncating or strict-named variants of parsing and formatting by @KodrAus in https://github.com/bitflags/bitflags/pull/400

    New Contributors

    • @tgross35 made their first contribution in https://github.com/bitflags/bitflags/pull/398

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.2...2.5.0

    Open source →
  17. 2.4.2 16 Jan 2024
    Release notes

    What's Changed

    • Cargo.toml: Anchor excludes to root of the package by @jamessan in https://github.com/bitflags/bitflags/pull/387
    • Update error messages by @KodrAus in https://github.com/bitflags/bitflags/pull/390
    • Add support for impl mode structs to be repr(packed) by @GnomedDev in https://github.com/bitflags/bitflags/pull/388
    • Remove old unused_tuple_struct_fields lint by @dtolnay in https://github.com/bitflags/bitflags/pull/393
    • Delete use of local_inner_macros by @dtolnay in https://github.com/bitflags/bitflags/pull/392

    New Contributors

    • @jamessan made their first contribution in https://github.com/bitflags/bitflags/pull/387
    • @GnomedDev made their first contribution in https://github.com/bitflags/bitflags/pull/388

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.1...2.4.2

    Open source →
  18. 2.4.1 15 Oct 2023
    Release notes

    What's Changed

    • Allow some new pedantic clippy lints by @KodrAus in https://github.com/bitflags/bitflags/pull/380

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.0...2.4.1

    Open source →
  19. 2.4.0 11 Aug 2023
    Release notes

    What's Changed

    • Remove html_root_url by @eldruin in https://github.com/bitflags/bitflags/pull/368
    • Support unnamed flags by @KodrAus in https://github.com/bitflags/bitflags/pull/371
    • Update smoke test to verify all Clippy and rustc lints by @MitMaro in https://github.com/bitflags/bitflags/pull/374
    • Specify the behavior of bitflags by @KodrAus in https://github.com/bitflags/bitflags/pull/369

    New Contributors

    • @eldruin made their first contribution in https://github.com/bitflags/bitflags/pull/368
    • @MitMaro made their first contribution in https://github.com/bitflags/bitflags/pull/374

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.3...2.4.0

    Open source →
  20. 2.3.3 27 Jun 2023
    Release notes

    Changes to -=

    The -= operator was incorrectly changed to truncate bits that didn't correspond to valid flags in 2.3.0. This has been fixed up so it once again behaves the same as - and difference.

    Changes to !

    The ! operator previously called Self::from_bits_truncate, which would truncate any bits that only partially overlapped with a valid flag. It will now use bits & Self::all().bits(), so any bits that overlap any bits specified by any flag will be respected. This is unlikely to have any practical implications, but enables defining a flag like const ALL = !0 as a way to signal that any bit pattern is a known set of flags.

    Changes to formatting

    Zero-valued flags will never be printed. You'll either get 0x0 for empty flags using debug formatting, or the set of flags with zero-valued flags omitted for others.

    Composite flags will no longer be redundantly printed if there are extra bits to print at the end that don't correspond to a valid flag.

    What's Changed

    • Fix up incorrect sub assign behavior and other cleanups by @KodrAus in https://github.com/bitflags/bitflags/pull/366

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3

    Open source →
  21. 2.3.2 13 Jun 2023
    Release notes

    What's Changed

    • [doc] [src/lib.rs] delete redundant path prefix by @OccupyMars2025 in https://github.com/bitflags/bitflags/pull/361

    New Contributors

    • @OccupyMars2025 made their first contribution in https://github.com/bitflags/bitflags/pull/361

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.1...2.3.2

    Open source →
  22. 2.3.1 17 May 2023
    Release notes

    What's Changed

    • Fix Self in flags value expressions by @KodrAus in https://github.com/bitflags/bitflags/pull/355

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.0...2.3.1

    Open source →
  23. 2.3.0 17 May 2023
    Release notes

    Major changes

    BitFlags trait deprecated in favor of Flags trait

    This release introduces the Flags trait and deprecates the BitFlags trait. These two traits are semver compatible so if you have public API code depending on BitFlags you can move to Flags without breaking end-users. This is possible because the BitFlags trait was never publicly implementable, so it now carries Flags as a supertrait. All implementations of Flags additionally implement BitFlags.

    The Flags trait is a publicly implementable version of the old BitFlags trait. The original BitFlags trait carried some macro baggage that made it difficult to implement, so a new Flags trait has been introduced as the One True Trait for interacting with flags types generically. See the the macro_free and custom_derive examples for more details.

    Bits trait publicly exposed

    The Bits trait for the underlying storage of flags values is also now publicly implementable. This lets you define your own exotic backing storage for flags. See the custom_bits_type example for more details.

    What's Changed

    • Use explicit hashes for actions steps by @KodrAus in https://github.com/bitflags/bitflags/pull/350
    • Support ejecting flags types from the bitflags macro by @KodrAus in https://github.com/bitflags/bitflags/pull/351

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.2.1...2.3.0

    Open source →
  24. 2.2.1 24 Apr 2023
    Release notes

    What's Changed

    • Refactor attribute filtering to apply per-flag by @KodrAus in https://github.com/bitflags/bitflags/pull/345

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.2.0...2.2.1

    Open source →
  25. 2.2.0 19 Apr 2023 withdrawn
    Release notes

    What's Changed

    • Create SECURITY.md by @KodrAus in https://github.com/bitflags/bitflags/pull/338
    • add docs to describe the behavior of multi-bit flags by @nicholasbishop in https://github.com/bitflags/bitflags/pull/340
    • Add support for bytemuck by @KodrAus in https://github.com/bitflags/bitflags/pull/336
    • Add a top-level macro for filtering attributes by @KodrAus in https://github.com/bitflags/bitflags/pull/341

    New Contributors

    • @nicholasbishop made their first contribution in https://github.com/bitflags/bitflags/pull/340

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.1.0...2.2.0

    Open source →
  26. 2.1.0 05 Apr 2023
    Release notes

    What's Changed

    • Add docs for the internal Field0 and examples of formatting/parsing by @KodrAus in https://github.com/bitflags/bitflags/pull/328
    • Add support for arbitrary by @KodrAus in https://github.com/bitflags/bitflags/pull/324
    • Fix up missing docs for consts within consts by @KodrAus in https://github.com/bitflags/bitflags/pull/330
    • Ignore clippy lint in generated code by @Jake-Shadle in https://github.com/bitflags/bitflags/pull/331

    New Contributors

    • @Jake-Shadle made their first contribution in https://github.com/bitflags/bitflags/pull/331

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.2...2.1.0

    Open source →
  27. 2.0.2 19 Mar 2023
    Release notes

    What's Changed

    • Fix up missing isize and usize Bits impls by @KodrAus in https://github.com/bitflags/bitflags/pull/321

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.1...2.0.2

    Open source →
  28. 2.0.1 16 Mar 2023
    Release notes

    What's Changed

    • Fix up some docs issues by @KodrAus in https://github.com/bitflags/bitflags/pull/309
    • Make empty_flag() const. by @tormeh in https://github.com/bitflags/bitflags/pull/313
    • Fix formatting of multi-bit flags with partial overlap by @KodrAus in https://github.com/bitflags/bitflags/pull/316

    New Contributors

    • @tormeh made their first contribution in https://github.com/bitflags/bitflags/pull/313

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.0...2.0.1

    Open source →
  29. 2.0.0 13 Mar 2023
    Release notes

    Major changes

    This release includes some major changes over 1.x. If you use bitflags! types in your public API then upgrading this library may cause breakage in your downstream users.

    ⚠️ Serialization

    You'll need to add the serde Cargo feature in order to #[derive(Serialize, Deserialize)] on your generated flags types:

    bitflags! {
        #[derive(Serialize, Deserialize)]
        #[serde(transparent)]
        pub struct Flags: T {
            ..
        }
    }
    

    where T is the underlying bits type you're using, such as u32.

    The default serialization format with serde has changed if you #[derive(Serialize, Deserialize)] on your generated flags types. It will now use a formatted string for human-readable formats and the underlying bits type for compact formats.

    To keep the old format, see the https://github.com/KodrAus/bitflags-serde-legacy library.

    ⚠️ Traits

    Generated flags types now derive fewer traits. If you need to maintain backwards compatibility, you can derive the following yourself:

    #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Copy)]
    

    ⚠️ Methods

    The unsafe from_bits_unchecked method is now a safe from_bits_retain method.

    You can add the following method to your generated types to keep them compatible:

    #[deprecated = "use the safe `from_bits_retain` method instead"]
    pub unsafe fn from_bits_unchecked(bits: T) -> Self {
        Self::from_bits_retain(bits)
    }
    

    where T is the underlying bits type you're using, such as u32.

    ⚠️ .bits field

    You can now use the .bits() method instead of the old .bits.

    The representation of generated flags types has changed from a struct with the single field bits to a newtype.

    What's Changed

    • Fix a typo and call out MSRV bump by @KodrAus in https://github.com/bitflags/bitflags/pull/259
    • BitFlags trait by @arturoc in https://github.com/bitflags/bitflags/pull/220
    • Add a hidden trait to discourage manual impls of BitFlags by @KodrAus in https://github.com/bitflags/bitflags/pull/261
    • Sanitize Ok by @konsumlamm in https://github.com/bitflags/bitflags/pull/266
    • Fix bug in Debug implementation by @konsumlamm in https://github.com/bitflags/bitflags/pull/268
    • Fix a typo in the generated documentation by @wackbyte in https://github.com/bitflags/bitflags/pull/271
    • Use SPDX license format by @atouchet in https://github.com/bitflags/bitflags/pull/272
    • serde tests fail in CI by @arturoc in https://github.com/bitflags/bitflags/pull/277
    • Fix beta test output by @KodrAus in https://github.com/bitflags/bitflags/pull/279
    • Add example to the README.md file by @tiaanl in https://github.com/bitflags/bitflags/pull/270
    • Iterator over all the enabled options by @arturoc in https://github.com/bitflags/bitflags/pull/278
    • from_bits_(truncate) fail with composite flags by @arturoc in https://github.com/bitflags/bitflags/pull/276
    • Add more platform coverage to CI by @KodrAus in https://github.com/bitflags/bitflags/pull/280
    • rework the way cfgs are handled by @KodrAus in https://github.com/bitflags/bitflags/pull/281
    • Split generated code into two types by @KodrAus in https://github.com/bitflags/bitflags/pull/282
    • expose bitflags iters using nameable types by @KodrAus in https://github.com/bitflags/bitflags/pull/286
    • Support creating flags from their names by @KodrAus in https://github.com/bitflags/bitflags/pull/287
    • Update README.md by @KodrAus in https://github.com/bitflags/bitflags/pull/288
    • Prepare for 2.0.0-rc.1 release by @KodrAus in https://github.com/bitflags/bitflags/pull/289
    • Add missing "if" to contains doc-comment in traits.rs by @rusty-snake in https://github.com/bitflags/bitflags/pull/291
    • Forbid unsafe_code by @fintelia in https://github.com/bitflags/bitflags/pull/294
    • serde: enable no-std support by @nim65s in https://github.com/bitflags/bitflags/pull/296
    • Add a parser for flags formatted as bar-separated-values by @KodrAus in https://github.com/bitflags/bitflags/pull/297
    • Prepare for 2.0.0-rc.2 release by @KodrAus in https://github.com/bitflags/bitflags/pull/299
    • Use strip_prefix instead of starts_with + slice by @QuinnPainter in https://github.com/bitflags/bitflags/pull/301
    • Fix up some clippy lints by @KodrAus in https://github.com/bitflags/bitflags/pull/302
    • Prepare for 2.0.0-rc.3 release by @KodrAus in https://github.com/bitflags/bitflags/pull/303
    • feat: Add minimum permissions to rust.yml workflow by @gabibguti in https://github.com/bitflags/bitflags/pull/305

    New Contributors

    • @wackbyte made their first contribution in https://github.com/bitflags/bitflags/pull/271
    • @atouchet made their first contribution in https://github.com/bitflags/bitflags/pull/272
    • @tiaanl made their first contribution in https://github.com/bitflags/bitflags/pull/270
    • @rusty-snake made their first contribution in https://github.com/bitflags/bitflags/pull/291
    • @fintelia made their first contribution in https://github.com/bitflags/bitflags/pull/294
    • @nim65s made their first contribution in https://github.com/bitflags/bitflags/pull/296
    • @QuinnPainter made their first contribution in https://github.com/bitflags/bitflags/pull/301
    • @gabibguti made their first contribution in https://github.com/bitflags/bitflags/pull/305

    Full Changelog: https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0

    Open source →
  30. 2.0.0-rc.3 20 Feb 2023 pre-release
    Release notes

    What's Changed

    • Use strip_prefix instead of starts_with + slice by @QuinnPainter in https://github.com/bitflags/bitflags/pull/301
    • Fix up some clippy lints by @KodrAus in https://github.com/bitflags/bitflags/pull/302

    New Contributors

    • @QuinnPainter made their first contribution in https://github.com/bitflags/bitflags/pull/301

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.0-rc.2...2.0.0-rc.3

    Open source →
  31. 2.0.0-rc.2 10 Feb 2023 pre-release
    Release notes

    Changes to serde serialization

    ⚠️ NOTE ⚠️ This release changes the default serialization you'll get if you #[derive(Serialize, Deserialize)] on your generated flags types. It will now use a formatted string for human-readable formats and the underlying bits type for compact formats.

    To keep the old behavior, see the bitflags-serde-legacy library.

    What's Changed

    • Add missing "if" to contains doc-comment in traits.rs by @rusty-snake in https://github.com/bitflags/bitflags/pull/291
    • Forbid unsafe_code by @fintelia in https://github.com/bitflags/bitflags/pull/294
    • serde: enable no-std support by @nim65s in https://github.com/bitflags/bitflags/pull/296
    • Add a parser for flags formatted as bar-separated-values by @KodrAus in https://github.com/bitflags/bitflags/pull/297

    New Contributors

    • @rusty-snake made their first contribution in https://github.com/bitflags/bitflags/pull/291
    • @fintelia made their first contribution in https://github.com/bitflags/bitflags/pull/294
    • @nim65s made their first contribution in https://github.com/bitflags/bitflags/pull/296

    Full Changelog: https://github.com/bitflags/bitflags/compare/2.0.0-rc.1...2.0.0-rc.2

    Open source →
  32. 2.0.0-rc.1 07 Oct 2022 pre-release
    Release notes

    This is a big release including a few years worth of work on a new BitFlags trait, iteration, and better macro organization for future extensibility.

    What's Changed

    • Fix a typo and call out MSRV bump by @KodrAus in https://github.com/bitflags/bitflags/pull/259
    • BitFlags trait by @arturoc in https://github.com/bitflags/bitflags/pull/220
    • Add a hidden trait to discourage manual impls of BitFlags by @KodrAus in https://github.com/bitflags/bitflags/pull/261
    • Sanitize Ok by @konsumlamm in https://github.com/bitflags/bitflags/pull/266
    • Fix bug in Debug implementation by @konsumlamm in https://github.com/bitflags/bitflags/pull/268
    • Fix a typo in the generated documentation by @wackbyte in https://github.com/bitflags/bitflags/pull/271
    • Use SPDX license format by @atouchet in https://github.com/bitflags/bitflags/pull/272
    • serde tests fail in CI by @arturoc in https://github.com/bitflags/bitflags/pull/277
    • Fix beta test output by @KodrAus in https://github.com/bitflags/bitflags/pull/279
    • Add example to the README.md file by @tiaanl in https://github.com/bitflags/bitflags/pull/270
    • Iterator over all the enabled options by @arturoc in https://github.com/bitflags/bitflags/pull/278
    • from_bits_(truncate) fail with composite flags by @arturoc in https://github.com/bitflags/bitflags/pull/276
    • Add more platform coverage to CI by @KodrAus in https://github.com/bitflags/bitflags/pull/280
    • rework the way cfgs are handled by @KodrAus in https://github.com/bitflags/bitflags/pull/281
    • Split generated code into two types by @KodrAus in https://github.com/bitflags/bitflags/pull/282
    • expose bitflags iters using nameable types by @KodrAus in https://github.com/bitflags/bitflags/pull/286
    • Support creating flags from their names by @KodrAus in https://github.com/bitflags/bitflags/pull/287
    • Update README.md by @KodrAus in https://github.com/bitflags/bitflags/pull/288

    New Contributors

    • @wackbyte made their first contribution in https://github.com/bitflags/bitflags/pull/271
    • @atouchet made their first contribution in https://github.com/bitflags/bitflags/pull/272
    • @tiaanl made their first contribution in https://github.com/bitflags/bitflags/pull/270

    Full Changelog: https://github.com/bitflags/bitflags/compare/1.3.2...2.0.0-rc.1

    Open source →
  33. 1.3.2 16 Aug 2021
    Release notes
    • Allow non_snake_case in generated flags types (#256)
    Open source →
  34. 1.3.1 12 Aug 2021
    Release notes
    • Revert unconditional #[repr(transparent)] (#252)
    Open source →
  35. 1.3.0 11 Aug 2021 withdrawn
    Release notes

    This release bumps the Minimum Supported Rust Version to 1.46.0

    • Add #[repr(transparent)] (#187)

    • End empty doc comment with full stop (#202)

    • Fix typo in crate root docs (#206)

    • Document from_bits_unchecked unsafety (#207)

    • Let is_all ignore extra bits (#211)

    • Allows empty flag definition (#225)

    • Making crate accessible from std (#227)

    • Make from_bits a const fn (#229)

    • Allow multiple bitflags structs in one macro invocation (#235)

    • Add named functions to perform set operations (#244)

    • Fix typos in method docs (#245)

    • Modernization of the bitflags macro to take advantage of newer features and 2018 idioms (#246)

    • Fix regression (in an unreleased feature) and simplify tests (#247)

    • Use Self and fix bug when overriding stringify! (#249)

    Open source →
  36. 1.2.1 13 Oct 2019
    Release notes
    • Remove extraneous #[inline] attributes (#194)
    Open source →
  37. 1.2.0 24 Sep 2019
    Release notes
    • Fix typo: {Lower, Upper}Exp - {Lower, Upper}Hex (#183)

    • Add support for "unknown" bits (#188)

    Open source →
  38. 1.1.0 06 Jun 2019
    Release notes

    This is a re-release of 1.0.5, which was yanked due to a bug in the RLS.

    Open source →
  39. 1.0.5 02 May 2019 withdrawn
    Release notes
    • Use compiletest_rs flags supported by stable toolchain (#171)

    • Put the user provided attributes first (#173)

    • Make bitflags methods const on newer compilers (#175)

    Open source →
  40. 1.0.4 21 Aug 2018
    Release notes
    • Support Rust 2018 style macro imports (#165)

      use bitflags::bitflags;
      
    Open source →
  41. 1.0.3 30 Apr 2018
    Release notes
    • Improve zero value flag handling and documentation (#157)
    Open source →
  42. 1.0.2 26 Apr 2018
    Release notes
    • 30% improvement in compile time of bitflags crate (#156)

    • Documentation improvements (#153)

    • Implementation cleanup (#149)

    Open source →
  43. 1.0.1 12 Nov 2017
    Release notes
    • Add support for pub(restricted) specifier on the bitflags struct (#135)
    • Optimize performance of all() when called from a separate crate (#136)
    Open source →
  44. 1.0.0 09 Sep 2017
    Release notes
    • [breaking change] Macro now generates associated constants (#24)

    • [breaking change] Minimum supported version is Rust 1.20, due to usage of associated constants

    • After being broken in 0.9, the #[deprecated] attribute is now supported again (#112)

    • Other improvements to unit tests and documentation (#106 and #115)

    How to update your code to use associated constants

    Assuming the following structure definition:

    bitflags! {
      struct Something: u8 {
         const FOO = 0b01,
         const BAR = 0b10
      }
    }
    

    In 0.9 and older you could do:

    let x = FOO.bits | BAR.bits;
    

    Now you must use:

    let x = Something::FOO.bits | Something::BAR.bits;
    
    Open source →
  45. 0.9.1 29 May 2017
    Release notes
    • Fix the implementation of Formatting traits when other formatting traits were present in scope (#105)
    Open source →
  46. 0.9.0 21 May 2017
    Release notes
    • [breaking change] Use struct keyword instead of flags to define bitflag types (#84)

    • [breaking change] Terminate const items with semicolons instead of commas (#87)

    • Implement the Hex, Octal, and Binary formatting traits (#86)

    • Printing an empty flag value with the Debug trait now prints "(empty)" instead of nothing (#85)

    • The bitflags! macro can now be used inside of a fn body, to define a type local to that function (#74)

    Open source →
  47. 0.8.2 24 Mar 2017
    Release notes
    • Update feature flag used when building bitflags as a dependency of the Rust toolchain
    Open source →
  48. 0.8.1 24 Mar 2017
    Release notes
    • Allow bitflags to be used as a dependency of the Rust toolchain
    Open source →
  49. 0.8.0 14 Feb 2017
    Release notes
    • Add support for the experimental i128 and u128 integer types (#57)
    • Add set method: flags.set(SOME_FLAG, true) or flags.set(SOME_FLAG, false) (#55) This may break code that defines its own set method
    Open source →
  50. 0.7.1 13 Feb 2017 withdrawn
    Release notes

    (yanked)

    Open source →
  51. 0.7.0 15 May 2016
    Release notes
    • Implement the Extend trait (#49)
    • Allow definitions inside the bitflags! macro to refer to items imported from other modules (#51)
    Open source →
  52. 0.6.0 20 Apr 2016
    Release notes
    • The no_std feature was removed as it is now the default
    • The assignment_operators feature was remove as it is now enabled by default
    • Some clippy suggestions have been applied
    Open source →
  53. 0.5.0 28 Feb 2016

    Nothing published for this version

  54. 0.4.0 13 Jan 2016

    Nothing published for this version

  55. 0.3.4 13 Jan 2016 withdrawn

    Nothing published for this version

  56. 0.3.3 16 Nov 2015

    Nothing published for this version

  57. 0.3.2 05 Jul 2015

    Nothing published for this version

  58. 0.3.1 05 Jul 2015

    Nothing published for this version

  59. 0.3.0 25 Jun 2015

    Nothing published for this version

  60. 0.2.1 01 Jun 2015

    Nothing published for this version

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