A macro to generate structures which behave like bitflags
Full Changelog: https://github.com/bitflags/bitflags/compare/2.5.0...2.6.0
Debug
for Flag<B>
by @tgross35 in https://github.com/bitflags/bitflags/pull/398
Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.2...2.5.0
unused_tuple_struct_fields
lint by @dtolnay in https://github.com/bitflags/bitflags/pull/393
local_inner_macros
by @dtolnay in https://github.com/bitflags/bitflags/pull/392
Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.1...2.4.2
Full Changelog: https://github.com/bitflags/bitflags/compare/2.4.0...2.4.1
Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.3...2.4.0
-=
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
.
!
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.
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.
Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3
Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.1...2.3.2
Full Changelog: https://github.com/bitflags/bitflags/compare/2.3.0...2.3.1
BitFlags
trait deprecated in favor of Flags
traitThis 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 exposedThe 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.
Full Changelog: https://github.com/bitflags/bitflags/compare/2.2.1...2.3.0
Full Changelog: https://github.com/bitflags/bitflags/compare/2.2.0...2.2.1