|  | //@ run-pass | 
|  |  | 
|  | use std::mem; | 
|  |  | 
|  | #[allow(dead_code)] | 
|  | struct Trivial(u8, f32); | 
|  |  | 
|  | #[allow(dead_code)] | 
|  | struct NonTrivial(u8, String); | 
|  |  | 
|  | const CONST_U8: bool = mem::needs_drop::<u8>(); | 
|  | const CONST_STRING: bool = mem::needs_drop::<String>(); | 
|  | const CONST_TRIVIAL: bool = mem::needs_drop::<Trivial>(); | 
|  | const CONST_NON_TRIVIAL: bool = mem::needs_drop::<NonTrivial>(); | 
|  |  | 
|  | static STATIC_U8: bool = mem::needs_drop::<u8>(); | 
|  | static STATIC_STRING: bool = mem::needs_drop::<String>(); | 
|  | static STATIC_TRIVIAL: bool = mem::needs_drop::<Trivial>(); | 
|  | static STATIC_NON_TRIVIAL: bool = mem::needs_drop::<NonTrivial>(); | 
|  |  | 
|  | fn main() { | 
|  | assert!(!CONST_U8); | 
|  | assert!(CONST_STRING); | 
|  | assert!(!CONST_TRIVIAL); | 
|  | assert!(CONST_NON_TRIVIAL); | 
|  |  | 
|  | assert!(!STATIC_U8); | 
|  | assert!(STATIC_STRING); | 
|  | assert!(!STATIC_TRIVIAL); | 
|  | assert!(STATIC_NON_TRIVIAL); | 
|  | } |