Skip to content

Commit 7f807c6

Browse files
author
Jorge Aparicio
committed
---
yaml --- r: 163449 b: refs/heads/snap-stage3 c: 3084604 h: refs/heads/master i: 163447: 9ccfabe v: v3
1 parent 30a060c commit 7f807c6

File tree

2 files changed

+101
-5
lines changed

2 files changed

+101
-5
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 9146a919b616e39e528e4d7100d16eef52f1f852
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: dff2b395d21e8e6f322a3de2e68d20451afc08f3
4+
refs/heads/snap-stage3: 308460400bbab1383a61e1e61238a9c730d30ed9
55
refs/heads/try: 20cbbffeefc1f35e2ea63afce7b42fbd79611d42
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d

branches/snap-stage3/src/libcollections/trie/set.rs

Lines changed: 100 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,8 @@ impl Extend<uint> for TrieSet {
462462
}
463463
}
464464

465+
// NOTE(stage0): Remove impl after a snapshot
466+
#[cfg(stage0)]
465467
#[unstable = "matches collection reform specification, waiting for dust to settle"]
466468
impl BitOr<TrieSet, TrieSet> for TrieSet {
467469
/// Returns the union of `self` and `rhs` as a new `TrieSet`.
@@ -483,6 +485,30 @@ impl BitOr<TrieSet, TrieSet> for TrieSet {
483485
}
484486
}
485487

488+
#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot
489+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
490+
impl<'a, 'b> BitOr<&'b TrieSet, TrieSet> for &'a TrieSet {
491+
/// Returns the union of `self` and `rhs` as a new `TrieSet`.
492+
///
493+
/// # Example
494+
///
495+
/// ```
496+
/// use std::collections::TrieSet;
497+
///
498+
/// let a: TrieSet = vec![1, 2, 3].into_iter().collect();
499+
/// let b: TrieSet = vec![3, 4, 5].into_iter().collect();
500+
///
501+
/// let set: TrieSet = &a | &b;
502+
/// let v: Vec<uint> = set.iter().collect();
503+
/// assert_eq!(v, vec![1u, 2, 3, 4, 5]);
504+
/// ```
505+
fn bitor(self, rhs: &TrieSet) -> TrieSet {
506+
self.union(rhs).collect()
507+
}
508+
}
509+
510+
// NOTE(stage0): Remove impl after a snapshot
511+
#[cfg(stage0)]
486512
#[unstable = "matches collection reform specification, waiting for dust to settle"]
487513
impl BitAnd<TrieSet, TrieSet> for TrieSet {
488514
/// Returns the intersection of `self` and `rhs` as a new `TrieSet`.
@@ -504,6 +530,30 @@ impl BitAnd<TrieSet, TrieSet> for TrieSet {
504530
}
505531
}
506532

533+
#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot
534+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
535+
impl<'a, 'b> BitAnd<&'b TrieSet, TrieSet> for &'a TrieSet {
536+
/// Returns the intersection of `self` and `rhs` as a new `TrieSet`.
537+
///
538+
/// # Example
539+
///
540+
/// ```
541+
/// use std::collections::TrieSet;
542+
///
543+
/// let a: TrieSet = vec![1, 2, 3].into_iter().collect();
544+
/// let b: TrieSet = vec![2, 3, 4].into_iter().collect();
545+
///
546+
/// let set: TrieSet = &a & &b;
547+
/// let v: Vec<uint> = set.iter().collect();
548+
/// assert_eq!(v, vec![2u, 3]);
549+
/// ```
550+
fn bitand(self, rhs: &TrieSet) -> TrieSet {
551+
self.intersection(rhs).collect()
552+
}
553+
}
554+
555+
// NOTE(stage0): Remove impl after a snapshot
556+
#[cfg(stage0)]
507557
#[unstable = "matches collection reform specification, waiting for dust to settle"]
508558
impl BitXor<TrieSet, TrieSet> for TrieSet {
509559
/// Returns the symmetric difference of `self` and `rhs` as a new `TrieSet`.
@@ -525,6 +575,30 @@ impl BitXor<TrieSet, TrieSet> for TrieSet {
525575
}
526576
}
527577

578+
#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot
579+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
580+
impl<'a, 'b> BitXor<&'b TrieSet, TrieSet> for &'a TrieSet {
581+
/// Returns the symmetric difference of `self` and `rhs` as a new `TrieSet`.
582+
///
583+
/// # Example
584+
///
585+
/// ```
586+
/// use std::collections::TrieSet;
587+
///
588+
/// let a: TrieSet = vec![1, 2, 3].into_iter().collect();
589+
/// let b: TrieSet = vec![3, 4, 5].into_iter().collect();
590+
///
591+
/// let set: TrieSet = &a ^ &b;
592+
/// let v: Vec<uint> = set.iter().collect();
593+
/// assert_eq!(v, vec![1u, 2, 4, 5]);
594+
/// ```
595+
fn bitxor(self, rhs: &TrieSet) -> TrieSet {
596+
self.symmetric_difference(rhs).collect()
597+
}
598+
}
599+
600+
// NOTE(stage0): Remove impl after a snapshot
601+
#[cfg(stage0)]
528602
#[unstable = "matches collection reform specification, waiting for dust to settle"]
529603
impl Sub<TrieSet, TrieSet> for TrieSet {
530604
/// Returns the difference of `self` and `rhs` as a new `TrieSet`.
@@ -546,6 +620,28 @@ impl Sub<TrieSet, TrieSet> for TrieSet {
546620
}
547621
}
548622

623+
#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot
624+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
625+
impl<'a, 'b> Sub<&'b TrieSet, TrieSet> for &'a TrieSet {
626+
/// Returns the difference of `self` and `rhs` as a new `TrieSet`.
627+
///
628+
/// # Example
629+
///
630+
/// ```
631+
/// use std::collections::TrieSet;
632+
///
633+
/// let a: TrieSet = vec![1, 2, 3].into_iter().collect();
634+
/// let b: TrieSet = vec![3, 4, 5].into_iter().collect();
635+
///
636+
/// let set: TrieSet = &a - &b;
637+
/// let v: Vec<uint> = set.iter().collect();
638+
/// assert_eq!(v, vec![1u, 2]);
639+
/// ```
640+
fn sub(self, rhs: &TrieSet) -> TrieSet {
641+
self.difference(rhs).collect()
642+
}
643+
}
644+
549645
/// A forward iterator over a set.
550646
pub struct SetItems<'a> {
551647
iter: Entries<'a, ()>
@@ -837,7 +933,7 @@ mod test {
837933
let a: TrieSet = vec![1, 2, 3].into_iter().collect();
838934
let b: TrieSet = vec![3, 4, 5].into_iter().collect();
839935

840-
let set: TrieSet = a | b;
936+
let set: TrieSet = &a | &b;
841937
let v: Vec<uint> = set.iter().collect();
842938
assert_eq!(v, vec![1u, 2, 3, 4, 5]);
843939
}
@@ -847,7 +943,7 @@ mod test {
847943
let a: TrieSet = vec![1, 2, 3].into_iter().collect();
848944
let b: TrieSet = vec![2, 3, 4].into_iter().collect();
849945

850-
let set: TrieSet = a & b;
946+
let set: TrieSet = &a & &b;
851947
let v: Vec<uint> = set.iter().collect();
852948
assert_eq!(v, vec![2u, 3]);
853949
}
@@ -857,7 +953,7 @@ mod test {
857953
let a: TrieSet = vec![1, 2, 3].into_iter().collect();
858954
let b: TrieSet = vec![3, 4, 5].into_iter().collect();
859955

860-
let set: TrieSet = a ^ b;
956+
let set: TrieSet = &a ^ &b;
861957
let v: Vec<uint> = set.iter().collect();
862958
assert_eq!(v, vec![1u, 2, 4, 5]);
863959
}
@@ -867,7 +963,7 @@ mod test {
867963
let a: TrieSet = vec![1, 2, 3].into_iter().collect();
868964
let b: TrieSet = vec![3, 4, 5].into_iter().collect();
869965

870-
let set: TrieSet = a - b;
966+
let set: TrieSet = &a - &b;
871967
let v: Vec<uint> = set.iter().collect();
872968
assert_eq!(v, vec![1u, 2]);
873969
}

0 commit comments

Comments
 (0)