Compiler version cfg
This crate provides macros for conditional compilation according to rustc
compiler version, analogous to #[cfg(...)]
and
#[cfg_attr(...)]
.
[]
= "0.1"
Selectors
-
#[rustc::stable]
— True on any stable compiler. -
#[rustc::stable(1.34)]
— True on exactly the specified stable compiler. -
#[rustc::beta]
— True on any beta compiler. -
#[rustc::nightly]
— True on any nightly compiler or dev build. -
#[rustc::nightly(2019-01-01)]
— True on exactly one nightly. -
#[rustc::since(1.34)]
— True on that stable release and any later compiler, including beta and nightly. -
#[rustc::since(2019-01-01)]
— True on that nightly and all newer ones. -
#[rustc::before(
version or date)]
— Negative of #[rustc::since(...)]. -
#[rustc::not(
selector)]
— Negative of any selector; for example #[rustc::not(nightly)]. -
#[rustc::any(
selectors...)]
— True if any of the comma-separated selectors is true; for example #[rustc::any(stable, beta)]. -
#[rustc::all(
selectors...)]
— True if all of the comma-separated selectors are true; for example #[rustc::all(since(1.31), before(1.34))]. -
#[rustc::attr(
selector,
attribute)]
— For conditional inclusion of attributes; analogous tocfg_attr
.
Use cases
Providing additional trait impls as types are stabilized in the standard library without breaking compatibility with older compilers; in this case u128 stabilized in Rust 1.26:
Similar but for language features; the #[must_use] attribute stabilized in Rust 1.27:
Augmenting code with const
as const impls are stabilized in the standard
library. This use of const
as an attribute is recognized as a special case by
the rustc::attr macro.
use Duration;