diff options
author | Jingkui Wang <jkwang@google.com> | 2019-03-29 11:16:16 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-03 18:13:52 -0700 |
commit | 1612ff7a83ad27837d0ce19cc4558da09e20d4e6 (patch) | |
tree | f5aaafdb5a0810fb422aa62845943d5e3967dd65 /bit_field/tests | |
parent | 6bfc6a0304910701e55e56c4feaf0d73c07d33e5 (diff) | |
download | crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.tar crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.tar.gz crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.tar.bz2 crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.tar.lz crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.tar.xz crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.tar.zst crosvm-1612ff7a83ad27837d0ce19cc4558da09e20d4e6.zip |
improve bitfield type safety by allowing tuple struct field
user-defined tuple struct could be used to improve type safety. TEST=cargo test BUG=None Change-Id: I8ce10fc51b79c277ab23029513b707f3dd621af5 Reviewed-on: https://chromium-review.googlesource.com/1546432 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Tolnay <dtolnay@chromium.org>
Diffstat (limited to 'bit_field/tests')
-rw-r--r-- | bit_field/tests/test_tuple_struct.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/bit_field/tests/test_tuple_struct.rs b/bit_field/tests/test_tuple_struct.rs new file mode 100644 index 0000000..3b12735 --- /dev/null +++ b/bit_field/tests/test_tuple_struct.rs @@ -0,0 +1,25 @@ +extern crate bit_field; + +use bit_field::*; + +#[bitfield] +#[bits = 5] +#[derive(Debug, PartialEq)] +pub struct FiveBits(u8); + +#[bitfield] +struct Struct { + prefix: BitField1, + five_bits: FiveBits, + suffix: BitField2, +} + +#[test] +fn test_enum() { + let mut s = Struct::new(); + assert_eq!(s.get(0, 8), 0b_0000_0000); + + s.set_five_bits(FiveBits(0b10101)); + assert_eq!(s.get(0, 8), 0b_0010_1010); + assert_eq!(s.get_five_bits(), FiveBits(0b10101)); +} |