Xit*_*Dev 4 bitvector rust data-structures
我是 Rust 的初学者。我正在尝试使用BitVec库来表示位数组。我开始通过附加 0 或 1 的序列来使用它,但我在这样做时遇到了一些问题。当我附加一个 x 0序列然后是一个 y 1 序列时,它所做的是附加 x+y 零。请注意,如果我之前只附加 1 而未附加 0,则它可以工作。这是我的代码:
extern crate bit_vec;
use bit_vec::BitVec;
fn main(){
let mut bits = BitVec::new(); // creates an empty array of bits
append_zero(&mut bits);
append_one(&mut bits);
append_zero(&mut bits);
append_one(&mut bits);
append_one(&mut bits); // everything works perfectly till here
append_n_ones(&mut bits, 2); // this works
append_n_zeroes(&mut bits, 3); // this too
append_n_ones(&mut bits, 2); // this appends 2 zeroes instead!
println!("{:?}", bits);
}
fn append_zero(vector: &mut BitVec) {
vector.push(false);
}
fn append_one(vector: &mut BitVec) {
vector.push(true);
}
fn append_n_zeroes(vector: &mut BitVec, n: usize) {
let mut to_append = BitVec::from_elem(n, false); // creates a BitVec with n 0s
println!("trying to append: {:?}", to_append);
vector.append(&mut to_append);
}
fn append_n_ones(vector: &mut BitVec, n: usize) {
let mut to_append = BitVec::from_elem(n, true); // creates a BitVec with n 1s
println!("trying to append: {:?}", to_append);
vector.append(&mut to_append);
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
trying to append: 11
trying to append: 000
trying to append: 11
010111100000
Run Code Online (Sandbox Code Playgroud)
请注意,最后一行应该是010111100011
. 此外,在附加之前,11
正确打印。但随后它附加00
.
我正在使用这个网站来测试我的 Rust 代码,但在本地它有同样的问题。我试图查看BitVec 库的代码,但它目前对于我的 Rust 水平来说太先进了。