Skip to content

#[repr(u64)], #[repr(C, u64)], #[repr(u64, C)] have different behavior #34622

Closed
@lambda-fairy

Description

@lambda-fairy

Code

use std::mem;

#[repr(u64)]
enum BookHorses { TwilightSparkle }

#[repr(C, u64)]
enum PurpleHorses { TwilightSparkle }

#[repr(u64, C)]
enum PrincessHorses { TwilightSparkle }

fn main() {
    println!("{}", mem::size_of::<BookHorses>());
    println!("{}", mem::size_of::<PurpleHorses>());
    println!("{}", mem::size_of::<PrincessHorses>());
}

Output

8
4
8

i.e. when the compiler sees multiple repr arguments, it takes the first one and ignores the rest.

Expected behavior

Either all enums should have the same size, or the latter enums should not compile.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions