RS.CLIPPY.TRAILING_EMPTY_ARRAY

Struct with a trailing zero-sized array but without `#[repr(C)]` or another `repr` attribute

This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: trailing_empty_array. Copyright ©2025 The Rust Team. All rights reserved.

What it does

Displays a warning when a struct with a trailing zero-sized array is declared without a repr attribute.

Why is this bad?

Zero-sized arrays aren't very useful in Rust itself, so such a struct is likely being created to pass to C code or in some other situation where control over memory layout matters (for example, in conjunction with manual allocation to make it easy to compute the offset of the array). Either way, #[repr(C)] (or another repr attribute) is needed.

Example

struct RarelyUseful {
    some_field: u32,
    last: [u32; 0],
}

Use instead:

#[repr(C)]
struct MoreOftenUseful {
    some_field: usize,
    last: [u32; 0],
}