Packed tuples

My suggestion is pretty simple: add #[repr(C, packed)] tuples. Note that I don’t mean “replace current tuples with packed ones”.

Probable look: ($($type),*)p.

let x: (u16, u8)p = (15, 10)p;
println!("{}", core::mem::size_of_val(&x));

Can you say more about the use case for these?

I would be inclined to think that if layout is at all important, it's usually worth defining a struct and commenting on the design of it — definitely for FFI, and maybe for memory usage optimization. What situations would especially benefit from an unnamed packed type?

4 Likes

Different kinds of low-level stuff - splitting register's data, for example. It is not that necessary, but can make our lives a little bit easier. I anyway am here primarily not to discuss, but to watch the discussion (if anyone is interested). And the only use case of this is boilerplate code reduction.