Skip to content

Commit ec878a4

Browse files
committed
Simplify and cleanup bitv examples.
1 parent c509325 commit ec878a4

File tree

1 file changed

+120
-74
lines changed

1 file changed

+120
-74
lines changed

src/libcollections/bitv.rs

+120-74
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ enum BitvVariant { Big(BigBitv), Small(SmallBitv) }
9898
/// # Example
9999
///
100100
/// ```rust
101-
/// use collections::bitv::Bitv;
101+
/// use collections::Bitv;
102102
///
103103
/// let mut bv = Bitv::with_capacity(10, false);
104104
///
@@ -249,9 +249,9 @@ impl Bitv {
249249
/// # Example
250250
///
251251
/// ```
252-
/// use std::collections::Bitv;
252+
/// use std::collections::bitv;
253253
///
254-
/// let bv: Bitv = [false, true].iter().map(|n| *n).collect();
254+
/// let bv = bitv::from_bytes([0b01100000]);
255255
/// assert_eq!(bv.get(0), false);
256256
/// assert_eq!(bv.get(1), true);
257257
///
@@ -297,11 +297,15 @@ impl Bitv {
297297
/// # Example
298298
///
299299
/// ```
300-
/// use std::collections::Bitv;
300+
/// use std::collections::bitv;
301301
///
302-
/// let mut bv: Bitv = [false, true, false].iter().map(|n| *n).collect();
302+
/// let before = 0b01100000;
303+
/// let after = 0b11111111;
304+
///
305+
/// let mut bv = bitv::from_bytes([before]);
303306
/// bv.set_all();
304-
/// assert!(bv.eq_vec([true, true, true]));
307+
/// assert_eq!(bv, bitv::from_bytes([after]));
308+
/// ```
305309
#[inline]
306310
pub fn set_all(&mut self) {
307311
for w in self.storage.mut_iter() { *w = !0u; }
@@ -312,11 +316,15 @@ impl Bitv {
312316
/// # Example
313317
///
314318
/// ```
315-
/// use std::collections::Bitv;
319+
/// use std::collections::bitv;
320+
///
321+
/// let before = 0b01100000;
322+
/// let after = 0b10011111;
316323
///
317-
/// let mut bv: Bitv = [false, true, false].iter().map(|n| *n).collect();
324+
/// let mut bv = bitv::from_bytes([before]);
318325
/// bv.negate();
319-
/// assert!(bv.eq_vec([true, false, true]));
326+
/// assert_eq!(bv, bitv::from_bytes([after]));
327+
/// ```
320328
#[inline]
321329
pub fn negate(&mut self) {
322330
for w in self.storage.mut_iter() { *w = !*w; }
@@ -334,14 +342,17 @@ impl Bitv {
334342
/// # Example
335343
///
336344
/// ```
337-
/// use std::collections::Bitv;
345+
/// use std::collections::bitv;
346+
///
347+
/// let a = 0b01100100;
348+
/// let b = 0b01011010;
349+
/// let res = 0b01111110;
338350
///
339-
/// let mut bv1: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
340-
/// let bv2: Bitv = [false, true, false, true].iter().map(|n| *n).collect();
341-
/// let res: Bitv = [false, true, true, true].iter().map(|n| *n).collect();
351+
/// let mut a = bitv::from_bytes([a]);
352+
/// let b = bitv::from_bytes([b]);
342353
///
343-
/// assert!(bv1.union(&bv2));
344-
/// assert_eq!(bv1, res);
354+
/// assert!(a.union(&b));
355+
/// assert_eq!(a, bitv::from_bytes([res]));
345356
/// ```
346357
#[inline]
347358
pub fn union(&mut self, other: &Bitv) -> bool {
@@ -360,14 +371,17 @@ impl Bitv {
360371
/// # Example
361372
///
362373
/// ```
363-
/// use std::collections::Bitv;
374+
/// use std::collections::bitv;
364375
///
365-
/// let mut bv1: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
366-
/// let bv2: Bitv = [false, true, false, true].iter().map(|n| *n).collect();
367-
/// let res: Bitv = [false, true, false, false].iter().map(|n| *n).collect();
376+
/// let a = 0b01100100;
377+
/// let b = 0b01011010;
378+
/// let res = 0b01000000;
368379
///
369-
/// assert!(bv1.intersect(&bv2));
370-
/// assert_eq!(bv1, res);
380+
/// let mut a = bitv::from_bytes([a]);
381+
/// let b = bitv::from_bytes([b]);
382+
///
383+
/// assert!(a.intersect(&b));
384+
/// assert_eq!(a, bitv::from_bytes([res]));
371385
/// ```
372386
#[inline]
373387
pub fn intersect(&mut self, other: &Bitv) -> bool {
@@ -387,14 +401,24 @@ impl Bitv {
387401
/// # Example
388402
///
389403
/// ```
390-
/// use std::collections::Bitv;
404+
/// use std::collections::bitv;
405+
///
406+
/// let a = 0b01100100;
407+
/// let b = 0b01011010;
408+
/// let a_b = 0b00100100; // a - b
409+
/// let b_a = 0b00011010; // b - a
410+
///
411+
/// let mut bva = bitv::from_bytes([a]);
412+
/// let bvb = bitv::from_bytes([b]);
391413
///
392-
/// let mut bv1: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
393-
/// let bv2: Bitv = [false, true, false, true].iter().map(|n| *n).collect();
394-
/// let res: Bitv = [false, false, true, false].iter().map(|n| *n).collect();
414+
/// assert!(bva.difference(&bvb));
415+
/// assert_eq!(bva, bitv::from_bytes([a_b]));
395416
///
396-
/// assert!(bv1.difference(&bv2));
397-
/// assert_eq!(bv1, res);
417+
/// let bva = bitv::from_bytes([a]);
418+
/// let mut bvb = bitv::from_bytes([b]);
419+
///
420+
/// assert!(bvb.difference(&bva));
421+
/// assert_eq!(bvb, bitv::from_bytes([b_a]));
398422
/// ```
399423
#[inline]
400424
pub fn difference(&mut self, other: &Bitv) -> bool {
@@ -406,7 +430,7 @@ impl Bitv {
406430
/// # Example
407431
///
408432
/// ```
409-
/// use std::collections::bitv::Bitv;
433+
/// use std::collections::Bitv;
410434
///
411435
/// let mut bv = Bitv::with_capacity(5, true);
412436
/// assert_eq!(bv.all(), true);
@@ -429,16 +453,10 @@ impl Bitv {
429453
/// # Example
430454
///
431455
/// ```
432-
/// use std::collections::bitv::Bitv;
433-
///
434-
/// let mut bv = Bitv::with_capacity(10, false);
435-
/// bv.set(1, true);
436-
/// bv.set(2, true);
437-
/// bv.set(3, true);
438-
/// bv.set(5, true);
439-
/// bv.set(8, true);
456+
/// use std::collections::bitv;
440457
///
441-
/// assert_eq!(bv.iter().filter(|x| *x).count(), 5);
458+
/// let bv = bitv::from_bytes([0b01110100, 0b10010010]);
459+
/// assert_eq!(bv.iter().filter(|x| *x).count(), 7);
442460
/// ```
443461
#[inline]
444462
pub fn iter<'a>(&'a self) -> Bits<'a> {
@@ -450,7 +468,7 @@ impl Bitv {
450468
/// # Example
451469
///
452470
/// ```
453-
/// use std::collections::bitv::Bitv;
471+
/// use std::collections::Bitv;
454472
///
455473
/// let mut bv = Bitv::with_capacity(10, false);
456474
/// assert_eq!(bv.none(), true);
@@ -467,7 +485,7 @@ impl Bitv {
467485
/// # Example
468486
///
469487
/// ```
470-
/// use std::collections::bitv::Bitv;
488+
/// use std::collections::Bitv;
471489
///
472490
/// let mut bv = Bitv::with_capacity(10, false);
473491
/// assert_eq!(bv.any(), false);
@@ -488,7 +506,7 @@ impl Bitv {
488506
/// # Example
489507
///
490508
/// ```
491-
/// use std::collections::bitv::Bitv;
509+
/// use std::collections::Bitv;
492510
///
493511
/// let mut bv = Bitv::with_capacity(3, true);
494512
/// bv.set(1, false);
@@ -530,10 +548,11 @@ impl Bitv {
530548
/// # Example
531549
///
532550
/// ```
533-
/// use std::collections::bitv::Bitv;
551+
/// use std::collections::bitv;
534552
///
535-
/// let bv: Bitv = [true, false, true].iter().map(|n| *n).collect();
536-
/// assert_eq!(bv.to_bools(), vec!(true, false, true));
553+
/// let bv = bitv::from_bytes([0b10100000]);
554+
/// assert_eq!(bv.to_bools(), vec!(true, false, true, false,
555+
/// false, false, false, false));
537556
/// ```
538557
pub fn to_bools(&self) -> Vec<bool> {
539558
Vec::from_fn(self.nbits, |i| self.get(i))
@@ -548,11 +567,12 @@ impl Bitv {
548567
/// # Example
549568
///
550569
/// ```
551-
/// use std::collections::Bitv;
570+
/// use std::collections::bitv;
552571
///
553-
/// let bv: Bitv = [false, true, true].iter().map(|n| *n).collect();
572+
/// let bv = bitv::from_bytes([0b10100000]);
554573
///
555-
/// assert!(bv.eq_vec([false, true, true]));
574+
/// assert!(bv.eq_vec([true, false, true, false,
575+
/// false, false, false, false]));
556576
/// ```
557577
pub fn eq_vec(&self, v: &[bool]) -> bool {
558578
assert_eq!(self.nbits, v.len());
@@ -572,9 +592,9 @@ impl Bitv {
572592
/// # Example
573593
///
574594
/// ```
575-
/// use std::collections::bitv::Bitv;
595+
/// use std::collections::bitv;
576596
///
577-
/// let mut bv: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
597+
/// let mut bv = bitv::from_bytes([0b01001011]);
578598
/// bv.truncate(2);
579599
/// assert!(bv.eq_vec([false, true]));
580600
/// ```
@@ -595,7 +615,7 @@ impl Bitv {
595615
/// # Example
596616
///
597617
/// ```
598-
/// use std::collections::bitv::Bitv;
618+
/// use std::collections::Bitv;
599619
///
600620
/// let mut bv = Bitv::with_capacity(3, false);
601621
/// bv.reserve(10);
@@ -616,7 +636,7 @@ impl Bitv {
616636
/// # Example
617637
///
618638
/// ```
619-
/// use std::collections::bitv::Bitv;
639+
/// use std::collections::Bitv;
620640
///
621641
/// let mut bv = Bitv::new();
622642
/// bv.reserve(10);
@@ -632,11 +652,12 @@ impl Bitv {
632652
/// # Example
633653
///
634654
/// ```
635-
/// use std::collections::bitv::Bitv;
655+
/// use std::collections::bitv;
636656
///
637-
/// let mut bv: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
657+
/// let mut bv = bitv::from_bytes([0b01001011]);
638658
/// bv.grow(2, true);
639-
/// assert!(bv.eq_vec([false, true, true, false, true, true]));
659+
/// assert_eq!(bv.len(), 10);
660+
/// assert_eq!(bv.to_bytes(), vec!(0b01001011, 0b11000000));
640661
/// ```
641662
pub fn grow(&mut self, n: uint, value: bool) {
642663
let new_nbits = self.nbits + n;
@@ -676,11 +697,13 @@ impl Bitv {
676697
/// # Example
677698
///
678699
/// ```
679-
/// use std::collections::bitv::Bitv;
700+
/// use std::collections::bitv;
680701
///
681-
/// let mut bv: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
702+
/// let mut bv = bitv::from_bytes([0b01001001]);
703+
/// assert_eq!(bv.pop(), true);
682704
/// assert_eq!(bv.pop(), false);
683-
/// assert!(bv.eq_vec([false, true, true]));
705+
/// assert_eq!(bv.len(), 6);
706+
/// assert_eq!(bv.to_bytes(), vec!(0b01001000));
684707
/// ```
685708
pub fn pop(&mut self) -> bool {
686709
let ret = self.get(self.nbits - 1);
@@ -697,12 +720,12 @@ impl Bitv {
697720
/// # Example
698721
///
699722
/// ```
700-
/// use std::collections::bitv::Bitv;
723+
/// use std::collections::Bitv;
701724
///
702-
/// let mut bv: Bitv = [false, true].iter().map(|n| *n).collect();
725+
/// let mut bv = Bitv::new();
703726
/// bv.push(true);
704727
/// bv.push(false);
705-
/// assert!(bv.eq_vec([false, true, true, false]));
728+
/// assert!(bv.eq_vec([true, false]));
706729
/// ```
707730
pub fn push(&mut self, elem: bool) {
708731
let insert_pos = self.nbits;
@@ -974,9 +997,9 @@ impl BitvSet {
974997
/// # Example
975998
///
976999
/// ```
977-
/// use std::collections::{Bitv, BitvSet};
1000+
/// use std::collections::{bitv, BitvSet};
9781001
///
979-
/// let bv: Bitv = [false, true, true, false].iter().map(|n| *n).collect();
1002+
/// let bv = bitv::from_bytes([0b01100000]);
9801003
/// let s = BitvSet::from_bitv(bv);
9811004
///
9821005
/// // Print 1, 2 in arbitrary order
@@ -1279,11 +1302,15 @@ impl BitvSet {
12791302
/// use std::collections::BitvSet;
12801303
/// use std::collections::bitv;
12811304
///
1282-
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([0b01101000]));
1283-
/// let b = BitvSet::from_bitv(bitv::from_bytes([0b10100000]));
1305+
/// let a = 0b01101000;
1306+
/// let b = 0b10100000;
1307+
/// let res = 0b11101000;
1308+
///
1309+
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([a]));
1310+
/// let b = BitvSet::from_bitv(bitv::from_bytes([b]));
12841311
///
12851312
/// a.union_with(&b);
1286-
/// assert_eq!(a.unwrap(), bitv::from_bytes([0b11101000]));
1313+
/// assert_eq!(a.unwrap(), bitv::from_bytes([res]));
12871314
/// ```
12881315
#[inline]
12891316
pub fn union_with(&mut self, other: &BitvSet) {
@@ -1298,11 +1325,15 @@ impl BitvSet {
12981325
/// use std::collections::BitvSet;
12991326
/// use std::collections::bitv;
13001327
///
1301-
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([0b01101000]));
1302-
/// let b = BitvSet::from_bitv(bitv::from_bytes([0b10100000]));
1328+
/// let a = 0b01101000;
1329+
/// let b = 0b10100000;
1330+
/// let res = 0b00100000;
1331+
///
1332+
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([a]));
1333+
/// let b = BitvSet::from_bitv(bitv::from_bytes([b]));
13031334
///
13041335
/// a.intersect_with(&b);
1305-
/// assert_eq!(a.unwrap(), bitv::from_bytes([0b00100000]));
1336+
/// assert_eq!(a.unwrap(), bitv::from_bytes([res]));
13061337
/// ```
13071338
#[inline]
13081339
pub fn intersect_with(&mut self, other: &BitvSet) {
@@ -1317,11 +1348,22 @@ impl BitvSet {
13171348
/// use std::collections::BitvSet;
13181349
/// use std::collections::bitv;
13191350
///
1320-
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([0b01101000]));
1321-
/// let b = BitvSet::from_bitv(bitv::from_bytes([0b10100000]));
1351+
/// let a = 0b01101000;
1352+
/// let b = 0b10100000;
1353+
/// let a_b = 0b01001000; // a - b
1354+
/// let b_a = 0b10000000; // b - a
1355+
///
1356+
/// let mut bva = BitvSet::from_bitv(bitv::from_bytes([a]));
1357+
/// let bvb = BitvSet::from_bitv(bitv::from_bytes([b]));
1358+
///
1359+
/// bva.difference_with(&bvb);
1360+
/// assert_eq!(bva.unwrap(), bitv::from_bytes([a_b]));
13221361
///
1323-
/// a.difference_with(&b);
1324-
/// assert_eq!(a.unwrap(), bitv::from_bytes([0b01001000]));
1362+
/// let bva = BitvSet::from_bitv(bitv::from_bytes([a]));
1363+
/// let mut bvb = BitvSet::from_bitv(bitv::from_bytes([b]));
1364+
///
1365+
/// bvb.difference_with(&bva);
1366+
/// assert_eq!(bvb.unwrap(), bitv::from_bytes([b_a]));
13251367
/// ```
13261368
#[inline]
13271369
pub fn difference_with(&mut self, other: &BitvSet) {
@@ -1336,11 +1378,15 @@ impl BitvSet {
13361378
/// use std::collections::BitvSet;
13371379
/// use std::collections::bitv;
13381380
///
1339-
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([0b01101000]));
1340-
/// let b = BitvSet::from_bitv(bitv::from_bytes([0b10100000]));
1381+
/// let a = 0b01101000;
1382+
/// let b = 0b10100000;
1383+
/// let res = 0b11001000;
1384+
///
1385+
/// let mut a = BitvSet::from_bitv(bitv::from_bytes([a]));
1386+
/// let b = BitvSet::from_bitv(bitv::from_bytes([b]));
13411387
///
13421388
/// a.symmetric_difference_with(&b);
1343-
/// assert_eq!(a.unwrap(), bitv::from_bytes([0b11001000]));
1389+
/// assert_eq!(a.unwrap(), bitv::from_bytes([res]));
13441390
/// ```
13451391
#[inline]
13461392
pub fn symmetric_difference_with(&mut self, other: &BitvSet) {

0 commit comments

Comments
 (0)