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 2026Releases
latest 60 of 63-
2.13.115 Jul 2026Release notes
Open source →What's Changed
- Lower the LLVM IR output of the generated output by @bolshoytoster in #492
- Prepare for 2.13.1 release by @KodrAus in #493
New Contributors
- @bolshoytoster made their first contribution in #492
Full Changelog: 2.13.0...2.13.1
Release notes
Open source →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
-
2.13.005 Jun 2026Release notes
Open source →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
- add
-
2.12.102 Jun 2026Release notes
Open source →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
Release notes
Open source →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
- Rework the
-
2.12.029 May 2026 withdrawnRelease notes
Open source →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
Release notes
Open source →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
- Add a custom
-
2.11.114 Apr 2026Release notes
Open source →What's Changed
- Bless compile-fail tests for current beta by @DanielEScherzer in #478
- example_generated.rs: add missing third slash for doc comment by @DanielEScherzer in #477
- Clarify self and other in method docs by @KodrAus in #481
- Prepare for 2.11.1 release by @KodrAus in #482
New Contributors
- @DanielEScherzer made their first contribution in #478
Full Changelog: 2.11.0...2.11.1
Release notes
Open source →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
-
2.11.014 Feb 2026Release notes
Open source →What's Changed
- Fix use of Result in macro output by @james7132 in #462
- Add methods to get the known/unknown bits from a flags value by @WaterWhisperer in #473
- Prepare for 2.11.0 release by @KodrAus in #474
New Contributors
- @james7132 made their first contribution in #462
- @WaterWhisperer made their first contribution in #473
Full Changelog: 2.10.0...2.11.0
Release notes
Open source →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
-
2.10.019 Oct 2025Release notes
Open source →What's Changed
- Implement iterator for all named flags by @ssrlive in #465
- Depend on serde_core instead of serde by @KodrAus in #467
- Prepare for 2.10.0 release by @KodrAus in #468
New Contributors
Full Changelog: 2.9.4...2.10.0
Release notes
Open source →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
-
2.9.402 Sep 2025Release notes
Open source →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
-
2.9.322 Aug 2025Release notes
Open source →What's Changed
- Streamline generated code by @nnethercote in #458
- Prepare for 2.9.3 release by @KodrAus in #459
New Contributors
- @nnethercote made their first contribution in #458
Full Changelog: 2.9.2...2.9.3
Release notes
Open source →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
-
2.9.216 Aug 2025Release notes
Open source →What's Changed
- Fix difference in the spec by @KodrAus in #446
- Fix up inaccurate docs on bitflags_match by @KodrAus in #453
- Remove rustc internal crate feature by @KodrAus in #454
- Prepare for 2.9.2 release by @KodrAus in #456
Full Changelog: 2.9.1...2.9.2
Release notes
Open source →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
-
2.9.115 May 2025Release notes
Open source →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
-
2.9.001 Mar 2025Release notes
Open source →What's Changed
Flagstrait: addclear(&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
-
2.8.015 Jan 2025Release notes
Open source →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
-
2.7.010 Jan 2025Release notes
Open source →What's Changed
- Fix
clippy::doc_lazy_continuationlints 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
- Fix
-
2.6.024 Jun 2024Release notes
Open source →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
-
2.5.019 Mar 2024Release notes
Open source →What's Changed
- Derive
DebugforFlag<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
- Derive
-
2.4.216 Jan 2024Release notes
Open source →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_fieldslint by @dtolnay in https://github.com/bitflags/bitflags/pull/393 - Delete use of
local_inner_macrosby @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
-
2.4.115 Oct 2023Release notes
Open source →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
-
2.4.011 Aug 2023Release notes
Open source →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
-
2.3.327 Jun 2023Release notes
Open source →Changes to
-=The
-=operator was incorrectly changed to truncate bits that didn't correspond to valid flags in2.3.0. This has been fixed up so it once again behaves the same as-anddifference.Changes to
!The
!operator previously calledSelf::from_bits_truncate, which would truncate any bits that only partially overlapped with a valid flag. It will now usebits & 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 likeconst ALL = !0as 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
0x0for 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
-
2.3.213 Jun 2023Release notes
Open source →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
-
2.3.117 May 2023Release notes
Open source →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
-
2.3.017 May 2023Release notes
Open source →Major changes
BitFlagstrait deprecated in favor ofFlagstraitThis release introduces the
Flagstrait and deprecates theBitFlagstrait. These two traits are semver compatible so if you have public API code depending onBitFlagsyou can move toFlagswithout breaking end-users. This is possible because theBitFlagstrait was never publicly implementable, so it now carriesFlagsas a supertrait. All implementations ofFlagsadditionally implementBitFlags.The
Flagstrait is a publicly implementable version of the oldBitFlagstrait. The originalBitFlagstrait carried some macro baggage that made it difficult to implement, so a newFlagstrait has been introduced as the One True Trait for interacting with flags types generically. See the themacro_freeandcustom_deriveexamples for more details.Bitstrait publicly exposedThe
Bitstrait for the underlying storage of flags values is also now publicly implementable. This lets you define your own exotic backing storage for flags. See thecustom_bits_typeexample 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
-
2.2.124 Apr 2023Release notes
Open source →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
-
2.2.019 Apr 2023 withdrawnRelease notes
Open source →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
-
2.1.005 Apr 2023Release notes
Open source →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
-
2.0.219 Mar 2023Release notes
Open source →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
-
2.0.116 Mar 2023Release notes
Open source →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
-
2.0.013 Mar 2023Release notes
Open source →Major changes
This release includes some major changes over
1.x. If you usebitflags!types in your public API then upgrading this library may cause breakage in your downstream users.⚠️ Serialization
You'll need to add the
serdeCargo feature in order to#[derive(Serialize, Deserialize)]on your generated flags types:bitflags! { #[derive(Serialize, Deserialize)] #[serde(transparent)] pub struct Flags: T { .. } }where
Tis the underlying bits type you're using, such asu32.The default serialization format with
serdehas 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_uncheckedmethod is now a safefrom_bits_retainmethod.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
Tis the underlying bits type you're using, such asu32.⚠️
.bitsfieldYou 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
bitsto 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
Okby @konsumlamm in https://github.com/bitflags/bitflags/pull/266 - Fix bug in
Debugimplementation 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
-
2.0.0-rc.320 Feb 2023 pre-releaseRelease notes
Open source →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
-
2.0.0-rc.210 Feb 2023 pre-releaseRelease notes
Open source →Changes to
serdeserialization⚠️ 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-legacylibrary.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
-
2.0.0-rc.107 Oct 2022 pre-releaseRelease notes
Open source →This is a big release including a few years worth of work on a new
BitFlagstrait, 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
Okby @konsumlamm in https://github.com/bitflags/bitflags/pull/266 - Fix bug in
Debugimplementation 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
-
1.3.216 Aug 2021 -
1.3.112 Aug 2021 -
1.3.011 Aug 2021 withdrawnRelease notes
Open source →This release bumps the Minimum Supported Rust Version to
1.46.0-
Add
#[repr(transparent)](#187) -
End
emptydoc comment with full stop (#202) -
Fix typo in crate root docs (#206)
-
Document from_bits_unchecked unsafety (#207)
-
Let
is_allignore extra bits (#211) -
Allows empty flag definition (#225)
-
Making crate accessible from std (#227)
-
Make
from_bitsa 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
bitflagsmacro to take advantage of newer features and 2018 idioms (#246) -
Fix regression (in an unreleased feature) and simplify tests (#247)
-
Use
Selfand fix bug when overridingstringify!(#249)
-
-
1.2.113 Oct 2019 -
1.2.024 Sep 2019Release notes
Open source → -
1.1.006 Jun 2019Release notes
Open source →This is a re-release of
1.0.5, which was yanked due to a bug in the RLS. -
1.0.502 May 2019 withdrawn -
1.0.421 Aug 2018 -
1.0.330 Apr 2018 -
1.0.226 Apr 2018 -
1.0.112 Nov 2017 -
1.0.009 Sep 2017Release notes
Open source →-
[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; -
-
0.9.129 May 2017Release notes
Open source →- Fix the implementation of
Formattingtraits when other formatting traits were present in scope (#105)
- Fix the implementation of
-
0.9.021 May 2017Release notes
Open source →-
[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, andBinaryformatting traits (#86) -
Printing an empty flag value with the
Debugtrait 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)
-
-
0.8.224 Mar 2017Release notes
Open source →- Update feature flag used when building bitflags as a dependency of the Rust toolchain
-
0.8.124 Mar 2017 -
0.8.014 Feb 2017 -
0.7.113 Feb 2017 withdrawn -
0.7.015 May 2016 -
0.6.020 Apr 2016Release notes
Open source →- The
no_stdfeature was removed as it is now the default - The
assignment_operatorsfeature was remove as it is now enabled by default - Some clippy suggestions have been applied
- The
-
0.5.028 Feb 2016Nothing published for this version
-
0.4.013 Jan 2016Nothing published for this version
-
0.3.413 Jan 2016 withdrawnNothing published for this version
-
0.3.316 Nov 2015Nothing published for this version
-
0.3.205 Jul 2015Nothing published for this version
-
0.3.105 Jul 2015Nothing published for this version
-
0.3.025 Jun 2015Nothing published for this version
-
0.2.101 Jun 2015Nothing published for this version