@@ -462,6 +462,8 @@ impl Extend<uint> for TrieSet {
462
462
}
463
463
}
464
464
465
+ // NOTE(stage0): Remove impl after a snapshot
466
+ #[ cfg( stage0) ]
465
467
#[ unstable = "matches collection reform specification, waiting for dust to settle" ]
466
468
impl BitOr < TrieSet , TrieSet > for TrieSet {
467
469
/// Returns the union of `self` and `rhs` as a new `TrieSet`.
@@ -483,6 +485,30 @@ impl BitOr<TrieSet, TrieSet> for TrieSet {
483
485
}
484
486
}
485
487
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) ]
486
512
#[ unstable = "matches collection reform specification, waiting for dust to settle" ]
487
513
impl BitAnd < TrieSet , TrieSet > for TrieSet {
488
514
/// Returns the intersection of `self` and `rhs` as a new `TrieSet`.
@@ -504,6 +530,30 @@ impl BitAnd<TrieSet, TrieSet> for TrieSet {
504
530
}
505
531
}
506
532
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) ]
507
557
#[ unstable = "matches collection reform specification, waiting for dust to settle" ]
508
558
impl BitXor < TrieSet , TrieSet > for TrieSet {
509
559
/// Returns the symmetric difference of `self` and `rhs` as a new `TrieSet`.
@@ -525,6 +575,30 @@ impl BitXor<TrieSet, TrieSet> for TrieSet {
525
575
}
526
576
}
527
577
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) ]
528
602
#[ unstable = "matches collection reform specification, waiting for dust to settle" ]
529
603
impl Sub < TrieSet , TrieSet > for TrieSet {
530
604
/// Returns the difference of `self` and `rhs` as a new `TrieSet`.
@@ -546,6 +620,28 @@ impl Sub<TrieSet, TrieSet> for TrieSet {
546
620
}
547
621
}
548
622
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
+
549
645
/// A forward iterator over a set.
550
646
pub struct SetItems < ' a > {
551
647
iter : Entries < ' a , ( ) >
@@ -837,7 +933,7 @@ mod test {
837
933
let a: TrieSet = vec ! [ 1 , 2 , 3 ] . into_iter ( ) . collect ( ) ;
838
934
let b: TrieSet = vec ! [ 3 , 4 , 5 ] . into_iter ( ) . collect ( ) ;
839
935
840
- let set: TrieSet = a | b;
936
+ let set: TrieSet = & a | & b;
841
937
let v: Vec < uint > = set. iter ( ) . collect ( ) ;
842
938
assert_eq ! ( v, vec![ 1 u, 2 , 3 , 4 , 5 ] ) ;
843
939
}
@@ -847,7 +943,7 @@ mod test {
847
943
let a: TrieSet = vec ! [ 1 , 2 , 3 ] . into_iter ( ) . collect ( ) ;
848
944
let b: TrieSet = vec ! [ 2 , 3 , 4 ] . into_iter ( ) . collect ( ) ;
849
945
850
- let set: TrieSet = a & b;
946
+ let set: TrieSet = & a & & b;
851
947
let v: Vec < uint > = set. iter ( ) . collect ( ) ;
852
948
assert_eq ! ( v, vec![ 2 u, 3 ] ) ;
853
949
}
@@ -857,7 +953,7 @@ mod test {
857
953
let a: TrieSet = vec ! [ 1 , 2 , 3 ] . into_iter ( ) . collect ( ) ;
858
954
let b: TrieSet = vec ! [ 3 , 4 , 5 ] . into_iter ( ) . collect ( ) ;
859
955
860
- let set: TrieSet = a ^ b;
956
+ let set: TrieSet = & a ^ & b;
861
957
let v: Vec < uint > = set. iter ( ) . collect ( ) ;
862
958
assert_eq ! ( v, vec![ 1 u, 2 , 4 , 5 ] ) ;
863
959
}
@@ -867,7 +963,7 @@ mod test {
867
963
let a: TrieSet = vec ! [ 1 , 2 , 3 ] . into_iter ( ) . collect ( ) ;
868
964
let b: TrieSet = vec ! [ 3 , 4 , 5 ] . into_iter ( ) . collect ( ) ;
869
965
870
- let set: TrieSet = a - b;
966
+ let set: TrieSet = & a - & b;
871
967
let v: Vec < uint > = set. iter ( ) . collect ( ) ;
872
968
assert_eq ! ( v, vec![ 1 u, 2 ] ) ;
873
969
}
0 commit comments