diff options
author | Kamal Marhubi <kamal@marhubi.com> | 2016-03-15 14:09:07 -0400 |
---|---|---|
committer | Kamal Marhubi <kamal@marhubi.com> | 2016-03-16 11:59:03 -0400 |
commit | b4c9f5bad14c3ce13edc2f72ef409e3397dc7f10 (patch) | |
tree | bcd42506096a22032749959509acc6b0fce4e4cc /src/lib.rs | |
parent | 97157b4863105032de21aad6982eb17dbd62c120 (diff) | |
download | nix-b4c9f5bad14c3ce13edc2f72ef409e3397dc7f10.zip |
Add libc_bitflags convenience macro
We define many bitflags types with values from the libc crate. Currently
these look like this:
bitflags!{
flags ProtFlags: libc::c_int {
const PROT_NONE = libc::PROT_NONE,
const PROT_READ = libc::PROT_READ,
const PROT_WRITE = libc::PROT_WRITE,
const PROT_EXEC = libc::PROT_EXEC,
#[cfg(any(target_os = "linux", target_os = "android"))]
const PROT_GROWSDOWN = libc::PROT_GROWSDOWN,
#[cfg(any(target_os = "linux", target_os = "android"))]
const PROT_GROWSUP = libc::PROT_GROWSUP,
}
}
There's some repetition which is tedious. With the new macro, the above
can instead be written
libc_bitflags!{
flags ProtFlags: libc::c_int {
PROT_NONE,
PROT_READ,
PROT_WRITE,
PROT_EXEC,
#[cfg(any(target_os = "linux", target_os = "android"))]
PROT_GROWSDOWN,
#[cfg(any(target_os = "linux", target_os = "android"))]
PROT_GROWSUP,
}
}
Thanks to Daniel Keep for the Little Book of Rust Macros, and for
helping with this macro.
Refs https://github.com/nix-rust/nix/issues/264
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -19,6 +19,8 @@ extern crate cfg_if; #[cfg(test)] extern crate nix_test as nixtest; +#[macro_use] mod macros; + // In rust 1.8+ this should be `pub extern crate libc` but prior // to https://github.com/rust-lang/rust/issues/26775 being resolved // it is necessary to get a little creative. |