tikue: Sure, point taken.
The issue is that when you are working with bit-fields, which you typically do when working directly with hard-ware, that it takes too much code in order to do something which should be very simple.
Since Rust doesn’t allow you to name individual bits in a type, it means that you have to either have to design a macro-system or you would have to use the very unsafe code like:
port.set_bits((port.get_bits() & !(3 << 5)) | new_value);
If bits could be specified (as you can with byte-values) in a struct, this would be:
port.field = new_value;
As you can imagine, if 50% of your code-base is all about setting these bits then you have a major source of errors.