std: Move the bitflags! macro to a gated crate
In accordance with [collections reform part 2][rfc] this macro has been moved to an external [bitflags crate][crate] which is [available though crates.io][cratesio]. Inside the standard distribution the macro has been moved to a crate called `rustc_bitflags` for current users to continue using. [rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0509-collections-reform-part-2.md [crate]: https://github.com/rust-lang/bitflags [cratesio]: http://crates.io/crates/bitflags The major user of `bitflags!` in terms of a public-facing possibly-stable API today is the `FilePermissions` structure inside of `std::io`. This user, however, will likely no longer use `bitflags!` after I/O reform has landed. To prevent breaking APIs today, this structure remains as-is. Current users of the `bitflags!` macro should add this to their `Cargo.toml`: bitflags = "0.1" and this to their crate root: #[macro_use] extern crate bitflags; Due to the removal of a public macro, this is a: [breaking-change]
This commit is contained in:
parent
02968389dc
commit
34fa70fba5
7 changed files with 24 additions and 8 deletions
|
|
@ -44,6 +44,7 @@ extern crate rbml;
|
|||
extern crate collections;
|
||||
#[macro_use] extern crate log;
|
||||
#[macro_use] extern crate syntax;
|
||||
#[macro_use] #[no_link] extern crate rustc_bitflags;
|
||||
|
||||
extern crate "serialize" as rustc_serialize; // used by deriving
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,16 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_name = "rustc_bitflags"]
|
||||
#![unstable]
|
||||
#![staged_api]
|
||||
#![crate_type = "rlib"]
|
||||
#![no_std]
|
||||
|
||||
//! A typesafe bitmask flag generator.
|
||||
|
||||
#[cfg(test)] #[macro_use] extern crate std;
|
||||
|
||||
/// The `bitflags!` macro generates a `struct` that holds a set of C-style
|
||||
/// bitmask flags. It is useful for creating typesafe wrappers for C APIs.
|
||||
///
|
||||
|
|
@ -21,6 +27,8 @@
|
|||
/// # Example
|
||||
///
|
||||
/// ```{.rust}
|
||||
/// #[macro_use] extern crate rustc_bitflags;
|
||||
///
|
||||
/// bitflags! {
|
||||
/// flags Flags: u32 {
|
||||
/// const FLAG_A = 0b00000001,
|
||||
|
|
@ -45,6 +53,8 @@
|
|||
/// The generated `struct`s can also be extended with type and trait implementations:
|
||||
///
|
||||
/// ```{.rust}
|
||||
/// #[macro_use] extern crate rustc_bitflags;
|
||||
///
|
||||
/// use std::fmt;
|
||||
///
|
||||
/// bitflags! {
|
||||
|
|
@ -273,8 +283,8 @@ macro_rules! bitflags {
|
|||
#[cfg(test)]
|
||||
#[allow(non_upper_case_globals)]
|
||||
mod tests {
|
||||
use hash::{self, SipHasher};
|
||||
use option::Option::{Some, None};
|
||||
use std::hash::{self, SipHasher};
|
||||
use std::option::Option::{Some, None};
|
||||
|
||||
bitflags! {
|
||||
#[doc = "> The first principle is that you must not fool yourself — and"]
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
#![allow(unknown_features)] #![feature(int_uint)]
|
||||
|
||||
extern crate libc;
|
||||
#[macro_use] #[no_link] extern crate rustc_bitflags;
|
||||
|
||||
pub use self::OtherAttribute::*;
|
||||
pub use self::SpecialAttribute::*;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#[macro_use] extern crate log;
|
||||
#[macro_use] extern crate syntax;
|
||||
#[macro_use] #[no_link] extern crate rustc_bitflags;
|
||||
|
||||
extern crate rustc;
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
#![feature(box_syntax)]
|
||||
#![feature(old_impl_check)]
|
||||
#![feature(optin_builtin_traits)]
|
||||
#![allow(unknown_features)] #![feature(int_uint)]
|
||||
#![feature(int_uint)]
|
||||
|
||||
// Don't link to std. We are std.
|
||||
#![no_std]
|
||||
|
|
@ -136,6 +136,8 @@ extern crate alloc;
|
|||
extern crate unicode;
|
||||
extern crate libc;
|
||||
|
||||
#[macro_use] #[no_link] extern crate rustc_bitflags;
|
||||
|
||||
// Make std testable by not duplicating lang items. See #2912
|
||||
#[cfg(test)] extern crate "std" as realstd;
|
||||
#[cfg(test)] pub use realstd::marker;
|
||||
|
|
@ -181,9 +183,6 @@ pub use unicode::char;
|
|||
#[macro_use]
|
||||
mod macros;
|
||||
|
||||
#[macro_use]
|
||||
pub mod bitflags;
|
||||
|
||||
mod rtdeps;
|
||||
|
||||
/* The Prelude. */
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ extern crate serialize;
|
|||
extern crate term;
|
||||
extern crate libc;
|
||||
#[macro_use] extern crate log;
|
||||
#[macro_use] #[no_link] extern crate rustc_bitflags;
|
||||
|
||||
extern crate "serialize" as rustc_serialize; // used by deriving
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue