You have to implement the C version manually, so it's not that odd you'd need to do the same for Rust?
You've described, basically, a custom type that is 8 Options<u8>s. If you start caring about performance you'll need to roll your own internal Option handling.