| Crates.io | flags-macro |
| lib.rs | flags-macro |
| version | 0.1.4 |
| created_at | 2018-11-24 06:59:46.688566+00 |
| updated_at | 2020-01-08 14:13:44.127114+00 |
| description | Provides a helper macro for writing bitflags. |
| homepage | |
| repository | https://github.com/yvt/flags-macro-rs |
| max_upload_size | |
| id | 98384 |
| size | 15,587 |
This crate provides a convenient macro flags for constructing bitflags.
It's designed to be compatible with bitflags and enumflags but works
with any bitflags-like types.
bitflags:
#[macro_use]
extern crate bitflags;
bitflags! {
struct Test: u32 {
const A = 0b0001;
const B = 0b0010;
}
}
let flags0 = flags![Test::{}];
let flags1 = flags![Test::{A}];
let flags2 = flags![Test::{A | B}];
assert_eq!(flags0, Test::empty());
assert_eq!(flags1, Test::A);
assert_eq!(flags2, Test::A | Test::B);
enumflags:
#[macro_use]
extern crate enumflags;
#[derive(EnumFlags, Copy, Clone, PartialEq, Eq, Debug)]
#[repr(u8)]
pub enum Test { A = 0b0001, B = 0b0010 }
let flags0 = flags![Test::{}];
let flags1 = flags![Test::{A}];
let flags2 = flags![Test::{A | B}];
assert_eq!(flags0, enumflags::BitFlags::empty());
assert_eq!(flags1, Test::A);
assert_eq!(flags2, Test::A | Test::B);
License: CC0-1.0