mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 18:53:39 +00:00
30 lines
592 B
Rust
30 lines
592 B
Rust
|
#![feature(specialization)]
|
||
|
#![allow(incomplete_features)]
|
||
|
|
||
|
pub trait ReflectDrop {
|
||
|
const REFLECT_DROP: bool = false;
|
||
|
}
|
||
|
|
||
|
impl<T> ReflectDrop for T where T: Clone {}
|
||
|
|
||
|
pub trait PinDropInternal {
|
||
|
fn is_valid()
|
||
|
where
|
||
|
Self: ReflectDrop;
|
||
|
}
|
||
|
|
||
|
struct Bears<T>(T);
|
||
|
|
||
|
default impl<T> ReflectDrop for Bears<T> {}
|
||
|
|
||
|
impl<T: Sized> PinDropInternal for Bears<T> {
|
||
|
fn is_valid()
|
||
|
where
|
||
|
Self: ReflectDrop,
|
||
|
{
|
||
|
let _ = [(); 0 - !!(<Bears<T> as ReflectDrop>::REFLECT_DROP) as usize]; //~ ERROR constant expression depends on a generic parameter
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn main() {}
|