rollup merge of #19216: Gankro/bitv
Part of #18424 This commit changes the semantics of `reserve` and `capacity` for Bitv and BitvSet to match conventions. It also introduces the notion of `reserve_index` and `reserve_index_exact` for collections with maximum-index-based capacity semantics. Deprecates free function constructors in favour of functions on Bitv itself. Changes `Bitv::pop` to return an Option rather than panicking. Deprecates and renames several methods in favour of conventions. Marks several blessed methods as unstable. This commit also substantially refactors Bitv and BitvSet's implementations. The new implementation is simpler, cleaner, better documented, and more robust against overflows. It also reduces coupling between Bitv and BitvSet. Tests have been seperated into seperate submodules. Fixes #16958 [breaking-change]
This commit is contained in:
commit
2f55a9db0d
3 changed files with 953 additions and 754 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -13,8 +13,8 @@ extern crate collections;
|
|||
use std::collections::Bitv;
|
||||
|
||||
fn bitv_test() {
|
||||
let mut v1 = box Bitv::with_capacity(31, false);
|
||||
let v2 = box Bitv::with_capacity(31, true);
|
||||
let mut v1 = box Bitv::from_elem(31, false);
|
||||
let v2 = box Bitv::from_elem(31, true);
|
||||
v1.union(&*v2);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use std::num::Float;
|
|||
fn main() {
|
||||
// Generate sieve of Eratosthenes for n up to 1e6
|
||||
let n = 1000000u;
|
||||
let mut sieve = Bitv::with_capacity(n+1, true);
|
||||
let mut sieve = Bitv::from_elem(n+1, true);
|
||||
let limit: uint = (n as f32).sqrt() as uint;
|
||||
for i in range(2, limit+1) {
|
||||
if sieve[i] {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue