68 lines
2.1 KiB
Rust
68 lines
2.1 KiB
Rust
struct DummyStruct;
|
|
|
|
// Transparent struct tuple wrapping a struct.
|
|
#[repr(transparent)]
|
|
struct TransparentComplexWrappingStructTuple(DummyStruct);
|
|
|
|
// Transparent struct tuple wrapping a primitive.
|
|
#[repr(transparent)]
|
|
struct TransparentPrimitiveWrappingStructTuple(u32);
|
|
|
|
// Transparent structure wrapping a struct.
|
|
#[repr(transparent)]
|
|
struct TransparentComplexWrappingStructure { only_field: DummyStruct }
|
|
|
|
// Transparent structure wrapping a primitive.
|
|
#[repr(transparent)]
|
|
struct TransparentPrimitiveWrappingStructure { only_field: u32 }
|
|
|
|
// Transparent struct wrapper with a marker wrapping a struct.
|
|
#[repr(transparent)]
|
|
struct TransparentComplexWrapper<T> {
|
|
only_non_zero_sized_field: DummyStruct,
|
|
marker: PhantomData<T>,
|
|
}
|
|
|
|
// Transparent struct wrapper with a marker wrapping a primitive.
|
|
#[repr(transparent)]
|
|
struct TransparentPrimitiveWrapper<T> {
|
|
only_non_zero_sized_field: u32,
|
|
marker: PhantomData<T>,
|
|
}
|
|
|
|
// Associated constant declared before struct declaration.
|
|
impl TransparentPrimitiveWithAssociatedConstants {
|
|
pub const ZERO: TransparentPrimitiveWithAssociatedConstants = TransparentPrimitiveWithAssociatedConstants {
|
|
bits: 0
|
|
};
|
|
}
|
|
|
|
// Transparent structure wrapping a primitive with associated constants.
|
|
#[repr(transparent)]
|
|
struct TransparentPrimitiveWithAssociatedConstants { bits: u32 }
|
|
|
|
// Associated constant declared after struct declaration.
|
|
impl TransparentPrimitiveWithAssociatedConstants {
|
|
pub const ONE: TransparentPrimitiveWithAssociatedConstants = TransparentPrimitiveWithAssociatedConstants {
|
|
bits: 1
|
|
};
|
|
}
|
|
|
|
enum EnumWithAssociatedConstantInImpl { A }
|
|
|
|
impl EnumWithAssociatedConstantInImpl {
|
|
pub const TEN: TransparentPrimitiveWrappingStructure = TransparentPrimitiveWrappingStructure { only_field: 10 };
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn root(
|
|
a: TransparentComplexWrappingStructTuple,
|
|
b: TransparentPrimitiveWrappingStructTuple,
|
|
c: TransparentComplexWrappingStructure,
|
|
d: TransparentPrimitiveWrappingStructure,
|
|
e: TransparentComplexWrapper<i32>,
|
|
f: TransparentPrimitiveWrapper<i32>,
|
|
g: TransparentPrimitiveWithAssociatedConstants,
|
|
h: EnumWithAssociatedConstantInImpl,
|
|
) { }
|