Full list of `impl const Default` types: - () - bool - char - Cell - std::ascii::Char - usize - u8 - u16 - u32 - u64 - u128 - i8 - i16 - i32 - i64 - i128 - f16 - f32 - f64 - f128 - std::marker::PhantomData<T> - Option<T> - std::iter::Empty<T> - std::ptr::Alignment - &[T] - &mut [T] - &str - &mut str - String - Vec<T>
23 lines
556 B
Rust
23 lines
556 B
Rust
// This tests feature gates for const impls in the standard library.
|
|
|
|
//@ revisions: stock gated
|
|
//@[gated] run-pass
|
|
|
|
#![cfg_attr(gated, feature(const_trait_impl, const_default))]
|
|
|
|
fn non_const_context() -> Vec<usize> {
|
|
Default::default()
|
|
}
|
|
|
|
const fn const_context() -> Vec<usize> {
|
|
Default::default()
|
|
//[stock]~^ ERROR cannot call conditionally-const associated function
|
|
//[stock]~| ERROR `Default` is not yet stable as a const trait
|
|
}
|
|
|
|
fn main() {
|
|
const VAL: Vec<usize> = const_context();
|
|
|
|
assert_eq!(VAL, non_const_context());
|
|
}
|