From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/rustversion/README.md | 139 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 vendor/rustversion/README.md (limited to 'vendor/rustversion/README.md') diff --git a/vendor/rustversion/README.md b/vendor/rustversion/README.md new file mode 100644 index 000000000..5b9727251 --- /dev/null +++ b/vendor/rustversion/README.md @@ -0,0 +1,139 @@ +Compiler version cfg +==================== + +[github](https://github.com/dtolnay/rustversion) +[crates.io](https://crates.io/crates/rustversion) +[docs.rs](https://docs.rs/rustversion) +[build status](https://github.com/dtolnay/rustversion/actions?query=branch%3Amaster) + +This crate provides macros for conditional compilation according to rustc +compiler version, analogous to [`#[cfg(...)]`][cfg] and +[`#[cfg_attr(...)]`][cfg_attr]. + +[cfg]: https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg-attribute +[cfg_attr]: https://doc.rust-lang.org/reference/conditional-compilation.html#the-cfg_attr-attribute + +```toml +[dependencies] +rustversion = "1.0" +``` + +
+ +## Selectors + +- `#[rustversion::stable]` + —
+ True on any stable compiler. + +- `#[rustversion::stable(1.34)]` + —
+ True on exactly the specified stable compiler. + +- `#[rustversion::beta]` + —
+ True on any beta compiler. + +- `#[rustversion::nightly]` + —
+ True on any nightly compiler or dev build. + +- `#[rustversion::nightly(2019-01-01)]` + —
+ True on exactly one nightly. + +- `#[rustversion::since(1.34)]` + —
+ True on that stable release and any later compiler, including beta and + nightly. + +- `#[rustversion::since(2019-01-01)]` + —
+ True on that nightly and all newer ones. + +- `#[rustversion::before(`version or date`)]` + —
+ Negative of *#[rustversion::since(...)]*. + +- `#[rustversion::not(`selector`)]` + —
+ Negative of any selector; for example *#[rustversion::not(nightly)]*. + +- `#[rustversion::any(`selectors...`)]` + —
+ True if any of the comma-separated selectors is true; for example + *#[rustversion::any(stable, beta)]*. + +- `#[rustversion::all(`selectors...`)]` + —
+ True if all of the comma-separated selectors are true; for example + *#[rustversion::all(since(1.31), before(1.34))]*. + +- `#[rustversion::attr(`selector`, `attribute`)]` + —
+ For conditional inclusion of attributes; analogous to `cfg_attr`. + +
+ +## Use cases + +Providing additional trait impls as types are stabilized in the standard library +without breaking compatibility with older compilers; in this case Pin\ +stabilized in [Rust 1.33][pin]: + +[pin]: https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html#pinning + +```rust +#[rustversion::since(1.33)] +use std::pin::Pin; + +#[rustversion::since(1.33)] +impl MyTrait for Pin

{ + /* ... */ +} +``` + +Similar but for language features; the ability to control alignment greater than +1 of packed structs was stabilized in [Rust 1.33][packed]. + +[packed]: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1330-2019-02-28 + +```rust +#[rustversion::attr(before(1.33), repr(packed))] +#[rustversion::attr(since(1.33), repr(packed(2)))] +struct Six(i16, i32); + +fn main() { + println!("{}", std::mem::align_of::()); +} +``` + +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 rustversion::attr macro. + +```rust +use std::time::Duration; + +#[rustversion::attr(since(1.32), const)] +fn duration_as_days(dur: Duration) -> u64 { + dur.as_secs() / 60 / 60 / 24 +} +``` + +
+ +#### License + + +Licensed under either of Apache License, Version +2.0 or MIT license at your option. + + +
+ + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions. + -- cgit v1.2.3