aml_sta_341615000 (11423312,com.google.android.go.os.statsd,com.google.android.os.statsd)
Snap for 10453563 from 733af9d494ab2825a2bb069e81d2f9ba880d0abc to mainline-os-statsd-release

Change-Id: I3c9697a9ce7869d4d63fb63b193e488403ac83e6
tree: f8755189188b3d893bffb8e26b835c89ffed6561
  1. .github/
  2. 1.3.2/
  3. benches/
  4. examples/
  5. patches/
  6. src/
  7. tests/
  8. .cargo_vcs_info.json
  9. .gitignore
  10. Android.bp
  11. Cargo.toml
  12. Cargo.toml.orig
  13. cargo2android.json
  14. CHANGELOG.md
  15. CODE_OF_CONDUCT.md
  16. CONTRIBUTING.md
  17. LICENSE-APACHE
  18. LICENSE-MIT
  19. METADATA
  20. MODULE_LICENSE_APACHE2
  21. OWNERS
  22. README.md
  23. SECURITY.md
  24. TEST_MAPPING
README.md

bitflags

Rust Latest version Documentation License

A Rust macro to generate structures which behave like a set of bitflags

Usage

Add this to your Cargo.toml:

[dependencies]
bitflags = "2.2.1"

and this to your source code:

use bitflags::bitflags;

Example

Generate a flags structure:

use bitflags::bitflags;

// The `bitflags!` macro generates `struct`s that manage a set of flags.
bitflags! {
    #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
    struct Flags: u32 {
        const A = 0b00000001;
        const B = 0b00000010;
        const C = 0b00000100;
        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
}

Rust Version Support

The minimum supported Rust version is documented in the Cargo.toml file. This may be bumped in minor releases as necessary.