Have anybody found a way to do transitive packing of bitfields?
For instance, in import std.bitmanip : bitfields; struct X { // one bit too many to fit in one byte mixin(bitfields!(bool, `a`, 1, bool, `b`, 1, ubyte, `c`, 7, ubyte, `_pad`, 7); } struct Y { // one unused bit mixin(bitfields!(ubyte, `d`, 7, ubyte, `_pad`, 1); } struct XY { X x; Y y; }`XY` will currently occupy 4 bytes, when only 1+1+7+7=16 bits are actually used in `a`, `b`, `c` and `d`.
Rust just got support for this.