Remove associated_consts crate feature

Rewrite has_associated_consts probe to better represent internal usage
Update README
This commit is contained in:
Marc 2019-03-31 12:42:43 +13:00
parent 6190ecb861
commit 981d2bf32d
3 changed files with 9 additions and 9 deletions

View File

@ -22,4 +22,3 @@ features = ["std"]
default = ["std"]
std = []
i128 = []
associated_consts = []

View File

@ -42,9 +42,8 @@ Implementations for `i128` and `u128` are only available with Rust 1.26 and
later. The build script automatically detects this, but you can make it
mandatory by enabling the `i128` crate feature.
Similarly, additional traits making use of associated constants are available
with Rust 1.22 and later. Again, the build script automatically detects this,
but you can make it mandatory by enabling the `associated_consts` crate feature.
Traits making use of associated constants are available with Rust 1.22 and
later. This is automatically detected by the build script.
## Releases

View File

@ -9,14 +9,16 @@ fn main() {
panic!("i128 support was not detected!");
}
// Verbose probe to ensure we can blanket impl associated const traits.
// Early versions of associated consts prohibited this due to a restriction
// of const expressions to non-Drop types.
if probe("fn main() {
struct TestDrop(); impl Drop for TestDrop { fn drop(&mut self) {} }
trait TestConst { const TEST: Self; }
impl TestConst for TestDrop { const TEST: TestDrop = TestDrop(); }
trait Const { const CONST: Self; }
impl<T: Const> Const for Option<T> {
const CONST: Option<T> = Some(T::CONST);
}
}") {
println!("cargo:rustc-cfg=has_associated_consts");
} else if env::var_os("CARGO_FEATURE_ASSOCIATED_CONSTS").is_some() {
panic!("associated constant support was not detected!");
}
}