@@ -403,9 +403,29 @@ mod test {
403
403
let elems = e_intersection. iter ( ) . collect ( ) ;
404
404
assert_eq ! ( vec![ C ] , elems)
405
405
406
+ // Another way to express intersection
407
+ let e_intersection = e1 - ( e1 - e2) ;
408
+ let elems = e_intersection. iter ( ) . collect ( ) ;
409
+ assert_eq ! ( vec![ C ] , elems)
410
+
406
411
let e_subtract = e1 - e2;
407
412
let elems = e_subtract. iter ( ) . collect ( ) ;
408
413
assert_eq ! ( vec![ A ] , elems)
414
+
415
+ // Bitwise XOR of two sets, aka symmetric difference
416
+ let e_symmetric_diff = e1 ^ e2;
417
+ let elems = e_symmetric_diff. iter ( ) . collect ( ) ;
418
+ assert_eq ! ( vec![ A , B ] , elems)
419
+
420
+ // Another way to express symmetric difference
421
+ let e_symmetric_diff = ( e1 - e2) | ( e2 - e1) ;
422
+ let elems = e_symmetric_diff. iter ( ) . collect ( ) ;
423
+ assert_eq ! ( vec![ A , B ] , elems)
424
+
425
+ // Yet another way to express symmetric difference
426
+ let e_symmetric_diff = ( e1 | e2) - ( e1 & e2) ;
427
+ let elems = e_symmetric_diff. iter ( ) . collect ( ) ;
428
+ assert_eq ! ( vec![ A , B ] , elems)
409
429
}
410
430
411
431
#[ test]
0 commit comments