commit | 5fc2b79734e6fc752f56f55e79a4158513ab8846 | [log] [tgz] |
---|---|---|
author | Stephen Hines <[email protected]> | Wed Feb 21 12:13:08 2024 -0800 |
committer | Stephen Hines <[email protected]> | Wed Feb 21 15:22:22 2024 -0800 |
tree | e86ae9407a1113bf9f979973c7a3972979b34358 | |
parent | 6e7aa0fc8666c81ab39fb52c65e784e233200b55 [diff] |
Upgrade bitflags to 2.4.2 This project was upgraded with external_updater. Usage: tools/external_updater/updater.sh update external/rust/crates/bitflags For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md This crate has multiple versions, so it can't run the standard script to update the version. Instead, I ran the following sequence of commands after the build failed during the script run. ``` $ tools/external_updater/updater.sh update external/rust/crates/bitflags # Fetch the existing pinned 1.3.2 version $ git restore --source HEAD~ --staged --worktree 1.3.2 # Fetch the existing BUILD rules $ git restore --source HEAD~ --staged --worktree BUILD $ git commit --amend -a ``` Bug: http://b/326275487 Test: TreeHugger Change-Id: I59b9e9790e307a49714f5291a86264746c344bcf
bitflags
generates flags enums with well-defined semantics and ergonomic end-user APIs.
You can use bitflags
to:
You can't use bitflags
to:
guarantee only bits corresponding to defined flags will ever be set. bitflags
allows access to the underlying bits type so arbitrary bits may be set.
define bitfields. bitflags
only generates types where set bits denote the presence of some combination of flags.
Add this to your Cargo.toml
:
[dependencies] bitflags = "2.4.2"
and this to your source code:
use bitflags::bitflags;
Generate a flags structure:
use bitflags::bitflags; // The `bitflags!` macro generates `struct`s that manage a set of flags. bitflags! { /// Represents a set of flags. #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] struct Flags: u32 { /// The value `A`, at bit position `0`. const A = 0b00000001; /// The value `B`, at bit position `1`. const B = 0b00000010; /// The value `C`, at bit position `2`. const C = 0b00000100; /// The combination of `A`, `B`, and `C`. const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits(); } } fn main() { let e1 = Flags::A | Flags::C; let e2 = Flags::B | Flags::C; assert_eq!((e1 | e2), Flags::ABC); // union assert_eq!((e1 & e2), Flags::C); // intersection assert_eq!((e1 - e2), Flags::A); // set difference assert_eq!(!e2, Flags::A); // set complement }
The minimum supported Rust version is documented in the Cargo.toml
file. This may be bumped in minor releases as necessary.