Releases: bitflags/bitflags
2.5.0
2.4.2
What's Changed
- Cargo.toml: Anchor excludes to root of the package by @jamessan in #387
- Update error messages by @KodrAus in #390
- Add support for impl mode structs to be repr(packed) by @GnomedDev in #388
- Remove old
unused_tuple_struct_fields
lint by @dtolnay in #393 - Delete use of
local_inner_macros
by @dtolnay in #392 - Prepare for 2.4.2 release by @KodrAus in #394
New Contributors
- @jamessan made their first contribution in #387
- @GnomedDev made their first contribution in #388
Full Changelog: 2.4.1...2.4.2
2.4.1
2.4.0
What's Changed
- Remove html_root_url by @eldruin in #368
- Support unnamed flags by @KodrAus in #371
- Update smoke test to verify all Clippy and rustc lints by @MitMaro in #374
- Specify the behavior of bitflags by @KodrAus in #369
- Prepare for 2.4.0 release by @KodrAus in #376
New Contributors
Full Changelog: 2.3.3...2.4.0
2.3.3
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
Full Changelog: 2.3.2...2.3.3
2.3.2
What's Changed
- [doc] [src/lib.rs] delete redundant path prefix by @OccupyMars2025 in #361
- Prepare for 2.3.2 release by @KodrAus in #362
New Contributors
- @OccupyMars2025 made their first contribution in #361
Full Changelog: 2.3.1...2.3.2
2.3.1
2.3.0
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 #350
- Support ejecting flags types from the bitflags macro by @KodrAus in #351
Full Changelog: 2.2.1...2.3.0
2.2.1
2.2.0 (yanked)
What's Changed
- Create SECURITY.md by @KodrAus in #338
- add docs to describe the behavior of multi-bit flags by @nicholasbishop in #340
- Add support for bytemuck by @KodrAus in #336
- Add a top-level macro for filtering attributes by @KodrAus in #341
- Prepare for 2.2.0 release by @KodrAus in #342
New Contributors
- @nicholasbishop made their first contribution in #340
Full Changelog: 2.1.0...2.2.0