WUKQQ2HKS3KGG4LBEMGX7SLQISJ3PSFCEKQNWNGJICQSALMSKD7AC fn main() {let compiler = match rustc_version() {Some(compiler) => compiler,None => return,};
// This code exercises the surface area that we expect of the std Backtrace// type. If the current toolchain is able to compile it, we go ahead and use// backtrace in anyhow.const PROBE: &str = r#"#![feature(backtrace)]#![allow(dead_code)]
fn rustc_version() -> Option<Compiler> {let rustc = env::var_os("RUSTC")?;let output = Command::new(rustc).arg("--version").output().ok()?;let version = str::from_utf8(&output.stdout).ok()?;
impl Display for E {fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result {unimplemented!()}}
let mut pieces = version.split('.');if pieces.next() != Some("rustc 1") {return None;
impl Error for E {fn backtrace(&self) -> Option<&Backtrace> {let backtrace = Backtrace::capture();match backtrace.status() {BacktraceStatus::Captured | BacktraceStatus::Disabled | _ => {}}unimplemented!()}
let next = pieces.next()?;let minor = u32::from_str(next).ok()?;let nightly = version.contains("nightly") || version.contains("dev");Some(Compiler { minor, nightly })
fn main() {match compile_probe() {Some(status) if status.success() => println!("cargo:rustc-cfg=backtrace"),_ => {}}
fn compile_probe() -> Option<ExitStatus> {let rustc = env::var_os("RUSTC")?;let out_dir = env::var_os("OUT_DIR")?;let probefile = Path::new(&out_dir).join("lib.rs");fs::write(&probefile, PROBE).ok()?;Command::new(rustc).arg("--edition=2018").arg("--crate-name=anyhow_build").arg("--crate-type=lib").arg("--emit=metadata").arg("--out-dir").arg(out_dir).arg(probefile).status().ok()}