In its own Cargo.toml
, crates.io: Rust Package Registry uses:
[package]
name = "rustc-test"
[lib]
name = "test"
So having this in your Cargo.toml
:
[dev-dependencies]
rustc-test = "0.1"
… makes Cargo pass this to rustc: --extern test=…/target/…/libtest-….rlib
so that extern crate test;
uses that crate instead of the standard library one. Since that crate doesn’t use #[unstable]
(I removed them in this copy), this works fine on stable.
And yes, it looks like the #[bench]
attribute itself is not feature-gated. Only (the standard library’s copy of) the test
crate and test::Bencher
are. But honestly this looks like an accident and I think nobody else has noticed so far. I typed my previous message from memory of almost a year ago without checking, and when reading your reaction I thought I was wrong until I tried it.
I’ve just checked, none of rustc-test’s reverse dependencies use #[bench]
. I think it would be fine to feature-gate it today until we figure out a plan.
My concern with the alternate proposals so far is that they take us back to the drawing board.
For what it’s worth, the proposal I made in the other thread and quoted above is made to be minimal, just enough to support rustc --test
, leaving everything else to external code.