Skip to content

Commit 09152b5

Browse files
committed
---
yaml --- r: 162026 b: refs/heads/master c: 2ea3875 h: refs/heads/master v: v3
1 parent 88fb54f commit 09152b5

File tree

43 files changed

+8267
-7244
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+8267
-7244
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 061a87e5194cde49b5501323ff5ca7ca5a172441
2+
refs/heads/master: 2ea38750e92e199654968aa4dbb3462de71f7b50
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cafe2966770ff377aad6dd9fd808e68055587c58
55
refs/heads/try: 0f0d21c1eb5c7be04d323e0b06faf252ad790af6

trunk/src/etc/unicode.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -283,11 +283,7 @@ def load_east_asian_width(want_widths, except_cats):
283283
return widths
284284

285285
def escape_char(c):
286-
if c <= 0x7f:
287-
return "'\\x%2.2x'" % c
288-
if c <= 0xffff:
289-
return "'\\u%4.4x'" % c
290-
return "'\\U%8.8x'" % c
286+
return "'\\u{%x}'" % c
291287

292288
def emit_bsearch_range_table(f):
293289
f.write("""
@@ -377,8 +373,8 @@ def emit_conversions_module(f, lowerupper, upperlower):
377373
else if key < c { Less }
378374
else { Greater }
379375
}) {
380-
slice::Found(i) => Some(i),
381-
slice::NotFound(_) => None,
376+
slice::BinarySearchResult::Found(i) => Some(i),
377+
slice::BinarySearchResult::NotFound(_) => None,
382378
}
383379
}
384380
@@ -392,6 +388,7 @@ def emit_conversions_module(f, lowerupper, upperlower):
392388
def emit_grapheme_module(f, grapheme_table, grapheme_cats):
393389
f.write("""pub mod grapheme {
394390
use core::slice::SlicePrelude;
391+
use core::kinds::Copy;
395392
pub use self::GraphemeCat::*;
396393
use core::slice;
397394
@@ -403,18 +400,20 @@ def emit_grapheme_module(f, grapheme_table, grapheme_cats):
403400
f.write(" GC_" + cat + ",\n")
404401
f.write(""" }
405402
403+
impl Copy for GraphemeCat {}
404+
406405
fn bsearch_range_value_table(c: char, r: &'static [(char, char, GraphemeCat)]) -> GraphemeCat {
407406
use core::cmp::Ordering::{Equal, Less, Greater};
408407
match r.binary_search(|&(lo, hi, _)| {
409408
if lo <= c && c <= hi { Equal }
410409
else if hi < c { Less }
411410
else { Greater }
412411
}) {
413-
slice::Found(idx) => {
412+
slice::BinarySearchResult::Found(idx) => {
414413
let (_, _, cat) = r[idx];
415414
cat
416415
}
417-
slice::NotFound(_) => GC_Any
416+
slice::BinarySearchResult::NotFound(_) => GC_Any
418417
}
419418
}
420419
@@ -443,11 +442,11 @@ def emit_charwidth_module(f, width_table):
443442
else if hi < c { Less }
444443
else { Greater }
445444
}) {
446-
slice::Found(idx) => {
445+
slice::BinarySearchResult::Found(idx) => {
447446
let (_, _, r_ncjk, r_cjk) = r[idx];
448447
if is_cjk { r_cjk } else { r_ncjk }
449448
}
450-
slice::NotFound(_) => 1
449+
slice::BinarySearchResult::NotFound(_) => 1
451450
}
452451
}
453452
""")
@@ -540,11 +539,11 @@ def comp_pfun(char):
540539
else if hi < c { Less }
541540
else { Greater }
542541
}) {
543-
slice::Found(idx) => {
542+
slice::BinarySearchResult::Found(idx) => {
544543
let (_, _, result) = r[idx];
545544
result
546545
}
547-
slice::NotFound(_) => 0
546+
slice::BinarySearchResult::NotFound(_) => 0
548547
}
549548
}\n
550549
""")
@@ -613,7 +612,7 @@ def optimize_width_table(wtable):
613612
unicode_version = re.search(pattern, readme.read()).groups()
614613
rf.write("""
615614
/// The version of [Unicode](http://www.unicode.org/)
616-
/// that the `UnicodeChar` and `UnicodeStrSlice` traits are based on.
615+
/// that the `UnicodeChar` and `UnicodeStrPrelude` traits are based on.
617616
pub const UNICODE_VERSION: (uint, uint, uint) = (%s, %s, %s);
618617
""" % unicode_version)
619618
(canon_decomp, compat_decomp, gencats, combines,

trunk/src/libcollections/btree/set.rs

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ use core::iter::Peekable;
2222
use core::fmt::Show;
2323

2424
// FIXME(conventions): implement bounded iterators
25-
// FIXME(conventions): implement BitOr, BitAnd, BitXor, and Sub
2625

2726
/// A set based on a B-Tree.
2827
///
@@ -406,6 +405,90 @@ impl<T: Ord> Default for BTreeSet<T> {
406405
}
407406
}
408407

408+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
409+
impl<T: Ord + Clone> Sub<BTreeSet<T>,BTreeSet<T>> for BTreeSet<T> {
410+
/// Returns the difference of `self` and `rhs` as a new `BTreeSet<T>`.
411+
///
412+
/// # Examples
413+
///
414+
/// ```
415+
/// use std::collections::BTreeSet;
416+
///
417+
/// let a: BTreeSet<int> = vec![1,2,3].into_iter().collect();
418+
/// let b: BTreeSet<int> = vec![3,4,5].into_iter().collect();
419+
///
420+
/// let result: BTreeSet<int> = a - b;
421+
/// let result_vec: Vec<int> = result.into_iter().collect();
422+
/// assert_eq!(result_vec, vec![1,2]);
423+
/// ```
424+
fn sub(&self, rhs: &BTreeSet<T>) -> BTreeSet<T> {
425+
self.difference(rhs).cloned().collect()
426+
}
427+
}
428+
429+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
430+
impl<T: Ord + Clone> BitXor<BTreeSet<T>,BTreeSet<T>> for BTreeSet<T> {
431+
/// Returns the symmetric difference of `self` and `rhs` as a new `BTreeSet<T>`.
432+
///
433+
/// # Examples
434+
///
435+
/// ```
436+
/// use std::collections::BTreeSet;
437+
///
438+
/// let a: BTreeSet<int> = vec![1,2,3].into_iter().collect();
439+
/// let b: BTreeSet<int> = vec![2,3,4].into_iter().collect();
440+
///
441+
/// let result: BTreeSet<int> = a ^ b;
442+
/// let result_vec: Vec<int> = result.into_iter().collect();
443+
/// assert_eq!(result_vec, vec![1,4]);
444+
/// ```
445+
fn bitxor(&self, rhs: &BTreeSet<T>) -> BTreeSet<T> {
446+
self.symmetric_difference(rhs).cloned().collect()
447+
}
448+
}
449+
450+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
451+
impl<T: Ord + Clone> BitAnd<BTreeSet<T>,BTreeSet<T>> for BTreeSet<T> {
452+
/// Returns the intersection of `self` and `rhs` as a new `BTreeSet<T>`.
453+
///
454+
/// # Examples
455+
///
456+
/// ```
457+
/// use std::collections::BTreeSet;
458+
///
459+
/// let a: BTreeSet<int> = vec![1,2,3].into_iter().collect();
460+
/// let b: BTreeSet<int> = vec![2,3,4].into_iter().collect();
461+
///
462+
/// let result: BTreeSet<int> = a & b;
463+
/// let result_vec: Vec<int> = result.into_iter().collect();
464+
/// assert_eq!(result_vec, vec![2,3]);
465+
/// ```
466+
fn bitand(&self, rhs: &BTreeSet<T>) -> BTreeSet<T> {
467+
self.intersection(rhs).cloned().collect()
468+
}
469+
}
470+
471+
#[unstable = "matches collection reform specification, waiting for dust to settle"]
472+
impl<T: Ord + Clone> BitOr<BTreeSet<T>,BTreeSet<T>> for BTreeSet<T> {
473+
/// Returns the union of `self` and `rhs` as a new `BTreeSet<T>`.
474+
///
475+
/// # Examples
476+
///
477+
/// ```
478+
/// use std::collections::BTreeSet;
479+
///
480+
/// let a: BTreeSet<int> = vec![1,2,3].into_iter().collect();
481+
/// let b: BTreeSet<int> = vec![3,4,5].into_iter().collect();
482+
///
483+
/// let result: BTreeSet<int> = a | b;
484+
/// let result_vec: Vec<int> = result.into_iter().collect();
485+
/// assert_eq!(result_vec, vec![1,2,3,4,5]);
486+
/// ```
487+
fn bitor(&self, rhs: &BTreeSet<T>) -> BTreeSet<T> {
488+
self.union(rhs).cloned().collect()
489+
}
490+
}
491+
409492
impl<T: Show> Show for BTreeSet<T> {
410493
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
411494
try!(write!(f, "{{"));

0 commit comments

Comments
 (0)