// Copyright 2019 The Fuchsia Authors // // Licensed under a BSD-style license , Apache License, Version 2.0 // , or the MIT // license , at your option. // This file may not be copied, modified, or distributed except according to // those terms. extern crate zerocopy; #[path = "../util.rs"] mod util; use core::marker::PhantomData; use { static_assertions::assert_impl_all, zerocopy::{AsBytes, FromBytes, FromZeroes, Unaligned}, }; use self::util::NotZerocopy; fn main() {} // Test generic transparent structs #[derive(AsBytes, FromZeroes, FromBytes, Unaligned)] #[repr(transparent)] struct TransparentStruct { inner: T, _phantom: PhantomData<()>, } // It should be legal to derive these traits on a transparent struct, but it // must also ensure the traits are only implemented when the inner type // implements them. assert_impl_all!(TransparentStruct: FromZeroes); assert_impl_all!(TransparentStruct: FromBytes); assert_impl_all!(TransparentStruct: AsBytes); assert_impl_all!(TransparentStruct: Unaligned);