diff options
Diffstat (limited to 'third_party/rust/version_check/README.md')
-rw-r--r-- | third_party/rust/version_check/README.md | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/third_party/rust/version_check/README.md b/third_party/rust/version_check/README.md new file mode 100644 index 0000000000..8637d2ab1d --- /dev/null +++ b/third_party/rust/version_check/README.md @@ -0,0 +1,80 @@ +# version\_check + +[![Build Status](https://github.com/SergioBenitez/version_check/workflows/CI/badge.svg)](https://github.com/SergioBenitez/version_check/actions) +[![Current Crates.io Version](https://img.shields.io/crates/v/version_check.svg)](https://crates.io/crates/version_check) +[![rustdocs on docs.rs](https://docs.rs/version_check/badge.svg)](https://docs.rs/version_check) + +This tiny crate checks that the running or installed `rustc` meets some version +requirements. The version is queried by calling the Rust compiler with +`--version`. The path to the compiler is determined first via the `RUSTC` +environment variable. If it is not set, then `rustc` is used. If that fails, no +determination is made, and calls return `None`. + +## Usage + +Add to your `Cargo.toml` file, typically as a build dependency: + +```toml +[build-dependencies] +version_check = "0.9" +``` + +`version_check` is compatible and compiles with Rust 1.0.0 and beyond. + +## Examples + +Set a `cfg` flag in `build.rs` if the running compiler was determined to be +at least version `1.13.0`: + +```rust +extern crate version_check as rustc; + +if rustc::is_min_version("1.13.0").unwrap_or(false) { + println!("cargo:rustc-cfg=question_mark_operator"); +} +``` + +Check that the running compiler was released on or after `2018-12-18`: + +```rust +extern crate version_check as rustc; + +match rustc::is_min_date("2018-12-18") { + Some(true) => "Yep! It's recent!", + Some(false) => "No, it's older.", + None => "Couldn't determine the rustc version." +}; +``` + +Check that the running compiler supports feature flags: + +```rust +extern crate version_check as rustc; + +match rustc::is_feature_flaggable() { + Some(true) => "Yes! It's a dev or nightly release!", + Some(false) => "No, it's stable or beta.", + None => "Couldn't determine the rustc version." +}; +``` + +See the [rustdocs](https://docs.rs/version_check) for more examples and complete +documentation. + +## Alternatives + +This crate is dead simple with no dependencies. If you need something more and +don't care about panicking if the version cannot be obtained, or if you don't +mind adding dependencies, see [rustc_version]. If you'd instead prefer a feature +detection library that works by dynamically invoking `rustc` with a +representative code sample, see [autocfg]. + +[rustc_version]: https://crates.io/crates/rustc_version +[autocfg]: https://crates.io/crates/autocfg + +## License + +`version_check` is licensed under either of the following, at your option: + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) + * MIT License ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) |