Files
Alex Crichton 2b9db57a2e Implement core::error::Error on Rust 1.81+ (#747)
This commit updates when the `Error` trait is implemented to account for
how in Rust 1.81-and-prior the `Error` trait is always available, even
in `core`. This is currently done with detection at build-time of the
current Rust compiler version because the MSRV for this crate is below
1.81. In the future when the MSRV is increased, however, the build
script can be deleted.
2024-12-04 14:42:44 +10:00

28 lines
895 B
Rust

use std::process::Command;
use std::str;
fn main() {
// Temporary check to see if the rustc version >= 1.81 in which case the
// `Error` trait is always available. This is temporary because in the
// future the MSRV of this crate will be beyond 1.81 in which case this
// build script can be deleted.
let minor = rustc_minor_version().unwrap_or(0);
if minor >= 81 {
println!("cargo:rustc-cfg=core_error");
}
if minor >= 80 {
println!("cargo:rustc-check-cfg=cfg(core_error)");
}
}
fn rustc_minor_version() -> Option<u32> {
let rustc = std::env::var("RUSTC").unwrap();
let output = Command::new(rustc).arg("--version").output().ok()?;
let version = str::from_utf8(&output.stdout).ok()?;
let mut pieces = version.split('.');
if pieces.next() != Some("rustc 1") {
return None;
}
pieces.next()?.parse().ok()
}