diff options
Diffstat (limited to 'vendor/bytemuck/tests/derive.rs')
-rw-r--r-- | vendor/bytemuck/tests/derive.rs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/vendor/bytemuck/tests/derive.rs b/vendor/bytemuck/tests/derive.rs new file mode 100644 index 0000000..1c6b10e --- /dev/null +++ b/vendor/bytemuck/tests/derive.rs @@ -0,0 +1,77 @@ +#![cfg(feature = "derive")] +#![allow(dead_code)] + +use bytemuck::{ByteEq, ByteHash, Pod, TransparentWrapper, Zeroable}; +use std::marker::PhantomData; + +#[derive(Copy, Clone, Pod, Zeroable, ByteEq, ByteHash)] +#[repr(C)] +struct Test { + a: u16, + b: u16, +} + +#[derive(TransparentWrapper)] +#[repr(transparent)] +struct TransparentSingle { + a: u16, +} + +#[derive(TransparentWrapper)] +#[repr(transparent)] +#[transparent(u16)] +struct TransparentWithZeroSized { + a: u16, + b: (), +} + +#[derive(TransparentWrapper)] +#[repr(transparent)] +struct TransparentWithGeneric<T: ?Sized> { + a: T, +} + +/// Ensuring that no additional bounds are emitted. +/// See https://github.com/Lokathor/bytemuck/issues/145 +fn test_generic<T>(x: T) -> TransparentWithGeneric<T> { + TransparentWithGeneric::wrap(x) +} + +#[derive(TransparentWrapper)] +#[repr(transparent)] +#[transparent(T)] +struct TransparentWithGenericAndZeroSized<T: ?Sized> { + a: (), + b: T, +} + +/// Ensuring that no additional bounds are emitted. +/// See https://github.com/Lokathor/bytemuck/issues/145 +fn test_generic_with_zst<T>(x: T) -> TransparentWithGenericAndZeroSized<T> { + TransparentWithGenericAndZeroSized::wrap(x) +} + +#[derive(TransparentWrapper)] +#[repr(transparent)] +struct TransparentUnsized { + a: dyn std::fmt::Debug, +} + +type DynDebug = dyn std::fmt::Debug; + +#[derive(TransparentWrapper)] +#[repr(transparent)] +#[transparent(DynDebug)] +struct TransparentUnsizedWithZeroSized { + a: (), + b: DynDebug, +} + +#[derive(TransparentWrapper)] +#[repr(transparent)] +#[transparent(DynDebug)] +struct TransparentUnsizedWithGenericZeroSizeds<T: ?Sized, U: ?Sized> { + a: PhantomData<T>, + b: PhantomData<U>, + c: DynDebug, +} |