| #![crate_type = "lib"] |
| #![feature(transmutability)] |
| #![allow(dead_code, incomplete_features, non_camel_case_types)] |
| |
| mod assert { |
| use std::mem::TransmuteFrom; |
| |
| pub fn is_transmutable< |
| Src, |
| Dst, |
| const ASSUME_ALIGNMENT: bool, |
| const ASSUME_LIFETIMES: bool, |
| const ASSUME_VALIDITY: bool, |
| const ASSUME_VISIBILITY: bool, |
| >() |
| where |
| Dst: TransmuteFrom< |
| //~^ ERROR trait takes at most 2 generic arguments but 5 generic arguments were supplied |
| Src, |
| ASSUME_ALIGNMENT, |
| ASSUME_LIFETIMES, |
| ASSUME_VALIDITY, |
| ASSUME_VISIBILITY, |
| >, |
| { |
| } |
| } |
| |
| fn via_const() { |
| #[repr(C)] |
| struct Src; |
| #[repr(C)] |
| struct Dst; |
| |
| const FALSE: bool = false; |
| |
| assert::is_transmutable::<Src, Dst, FALSE, FALSE, FALSE, FALSE>(); |
| } |