-
Notifications
You must be signed in to change notification settings - Fork 155
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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.
- Loading branch information
1 parent
01c8b19
commit 2b9db57
Showing
5 changed files
with
35 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
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() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters