如何在 Rust 语言的单个字节中 write/read 8 true/false

How to write/read 8 true/false in a single byte on rust language

大家都知道bool用的是1字节而不是1字节

如果我想在一个字节中存储 8 个(或更多)true/false, 我怎样才能在 Rust 上做到这一点?

像这样:

fn main()
{
   let x:ByteOnBits;
   x[3]=true;
   if x[4]
   {
      println!("4th bit is true");
   }
}

一个包含 8 个布尔值的数组将是 8 个字节,而不是我期望的 1 个字节。

您可以使用 bitflags crate 将位用作以不同大小存储的布尔值。虽然它旨在用于其他用途,但您仍然可以利用它的功能。

bitvec crate 提供您需要的设施:

use bitvec::prelude::*;

fn main() {
    let mut data = 0u8;
    let bits = data.view_bits_mut::<Lsb0>();
    bits.set(3, true);
    if bits[4] {
        println!("xxx");
    }
    assert_eq!(data, 8);
}