Rust bitfield library for low-level registers
```rust
extern crate bitfieldregister; use bitfieldregister::register;
use std::convert::*;
enum RW {R, W}
impl From<[u8;1]> for RW { fn from(value: [u8;1]) -> Self { return match value[0] { 0 => RW::R, 1 => RW::W, _ => unreachable!() } }} impl Into<[u8;1]> for RW { fn into(self) -> [u8;1] { return match self { RW::R => [0], RW::W => [1] } }}
struct Address(u16);
impl From<[u8;2]> for Address { fn from(value: [u8;2]) -> Self { println!("{:?}", value); return Address(((value[1] as u16) << 8) + value[0] as u16); }} impl Into<[u8;2]> for Address { fn into(self) -> [u8;2] { return [(self.0 & 0xFF) as u8, ((self.0 & (0xFF << 8)) >> 8) as u8]; }}
struct Test { #[bitfield(from=1, to=10)] address: Address, #[bitfield(at=14)] rw: RW }
fn main() {
let mut test: Test = Default::default();
test.set_address(Address(1023));
test.set_rw(RW::W);
println!("raw value:");
for i in 0..test.0.len() {
print!("{:0>8b} ", test.0[test.0.len() - i - 1]);
}
println!();
println!("address: {:?}", test.get_address());
println!("rw: {:?}", test.get_rw());
} ```