#probe #rustc #features #autoconf

build feature-probe

Probe for rustc features from build.rs

2 releases

Uses old Rust 2015

0.1.1 Jun 7, 2018
0.1.0 Jun 7, 2018

#1289 in Development tools

Download history 36926/week @ 2024-07-21 37452/week @ 2024-07-28 58926/week @ 2024-08-04 43358/week @ 2024-08-11 35680/week @ 2024-08-18 40165/week @ 2024-08-25 34413/week @ 2024-09-01 32346/week @ 2024-09-08 65490/week @ 2024-09-15 151443/week @ 2024-09-22 308221/week @ 2024-09-29 676508/week @ 2024-10-06 548672/week @ 2024-10-13 320777/week @ 2024-10-20 51411/week @ 2024-10-27 47806/week @ 2024-11-03

1,151,442 downloads per month
Used in 1,649 crates (via bv)

MIT/Apache

9KB

feature-probe-rs: probe for rustc features from build.rs

Build Status Crates.io License: MIT License: Apache 2.0

To support multiple versions of Rust, it's often necessary to conditionally compile parts of our libraries or programs. It's possible to allow users to specify what features to enable, but detection is better, because users get all the features that their version of Rust supports. And while we could check the rustc version, it's better to probe for individual features. That way, code will work both on nightly, and on stable releases after particular features stabilize, without changes.

Usage

It’s on crates.io, so you can add

[build-dependencies]
feature-probe = "0.1.1"

Then add to your build.rs:

extern crate feature_probe;

use feature_probe::Probe;

Then you can probe for features such as types or expressions. For example:

fn main () {
    let probe = Probe::new();
    
    if probe.probe_type("i128") {
        println!("cargo:rustc-cfg=int_128");
    }
    
    if probe.probe_type("::std::ops::RangeInclusive<u64>") {
        println!("cargo:rustc-cfg=inclusive_range");
    }
}

This crate supports Rust version 1.16.0 and later.

No runtime deps