• 2.3.3 6ed2e8d3e6

    2.3.3 Stable

    archiver-bot released this 2023-06-26 23:26:33 -05:00 | 250 commits to main since this release

    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: https://github.com/bitflags/bitflags/compare/2.3.2...2.3.3

    Downloads
  • 2.3.2 09f71f492d

    2.3.2 Stable

    archiver-bot released this 2023-06-13 00:22:43 -05:00 | 268 commits to main since this release

    What's Changed

    New Contributors

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

    Downloads
  • 2.3.1 cf01ab083c

    2.3.1 Stable

    archiver-bot released this 2023-05-17 09:24:43 -05:00 | 272 commits to main since this release

    What's Changed

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

    Downloads
  • 2.3.0 31d3e4afef

    2.3.0 Stable

    archiver-bot released this 2023-05-16 21:44:08 -05:00 | 280 commits to main since this release

    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

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

    Downloads
  • 2.2.1 0c318c0d77

    2.2.1 Stable

    archiver-bot released this 2023-04-24 01:32:36 -05:00 | 313 commits to main since this release

    What's Changed

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

    Downloads
  • 2.2.0 cbcafa710f

    archiver-bot released this 2023-04-18 23:48:16 -05:00 | 318 commits to main since this release

    What's Changed

    New Contributors

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

    Downloads
  • 2.1.0 597d407492

    2.1.0 Stable

    archiver-bot released this 2023-04-05 17:47:07 -05:00 | 331 commits to main since this release

    What's Changed

    New Contributors

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

    Downloads
  • 2.0.2 11640f19a7

    2.0.2 Stable

    archiver-bot released this 2023-03-19 06:05:55 -05:00 | 343 commits to main since this release

    What's Changed

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

    Downloads
  • 2.0.1 8b43d2bb7e

    2.0.1 Stable

    archiver-bot released this 2023-03-15 21:02:36 -05:00 | 347 commits to main since this release

    What's Changed

    New Contributors

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

    Downloads
  • 2.0.0 b5a5ecf517

    2.0.0 Stable

    archiver-bot released this 2023-03-13 02:02:54 -05:00 | 357 commits to main since this release

    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.

    Contributions

    New Contributors

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

    Downloads