From 9fb8741b2ec6cf44256b7241123fcb81a4b21a68 Mon Sep 17 00:00:00 2001 From: Kevin Ballard Date: Wed, 7 May 2014 21:53:11 -0700 Subject: Handle breakage after libcore split API Changes: - &[T] and ~[T] no longer support the addition operator (+) --- src/libstd/ascii.rs | 2 +- src/libstd/num/i16.rs | 3 +-- src/libstd/num/i32.rs | 3 +-- src/libstd/num/i64.rs | 3 +-- src/libstd/num/i8.rs | 3 +-- src/libstd/num/int.rs | 3 +-- src/libstd/num/int_macros.rs | 3 +++ src/libstd/num/strconv.rs | 2 +- src/libstd/num/u16.rs | 3 +-- src/libstd/num/u32.rs | 3 +-- src/libstd/num/u64.rs | 3 +-- src/libstd/num/u8.rs | 3 +-- src/libstd/num/uint.rs | 3 +-- src/libstd/num/uint_macros.rs | 3 +++ src/libstd/slice.rs | 34 +++++----------------------------- src/libstd/str.rs | 9 +++++---- 16 files changed, 28 insertions(+), 55 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/ascii.rs b/src/libstd/ascii.rs index 32f78c23aa7..f45ec8a6742 100644 --- a/src/libstd/ascii.rs +++ b/src/libstd/ascii.rs @@ -13,7 +13,7 @@ use to_str::{IntoStr}; use str; use str::Str; -use str::StrSlice; +use str::{StrAllocating, StrSlice}; use str::OwnedStr; use container::Container; use cast; diff --git a/src/libstd/num/i16.rs b/src/libstd/num/i16.rs index 4bd2ba07634..d8f1c108b74 100644 --- a/src/libstd/num/i16.rs +++ b/src/libstd/num/i16.rs @@ -11,11 +11,10 @@ //! Operations and constants for signed 16-bits integers (`i16` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::i16::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/i32.rs b/src/libstd/num/i32.rs index 3c3acfae3c0..9cc8981fc13 100644 --- a/src/libstd/num/i32.rs +++ b/src/libstd/num/i32.rs @@ -11,11 +11,10 @@ //! Operations and constants for signed 32-bits integers (`i32` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::i32::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/i64.rs b/src/libstd/num/i64.rs index ad0fe1c08ef..4f7fe32cc70 100644 --- a/src/libstd/num/i64.rs +++ b/src/libstd/num/i64.rs @@ -11,11 +11,10 @@ //! Operations and constants for signed 64-bits integers (`i64` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::i64::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/i8.rs b/src/libstd/num/i8.rs index bd40a2c53b6..bea315d8683 100644 --- a/src/libstd/num/i8.rs +++ b/src/libstd/num/i8.rs @@ -11,11 +11,10 @@ //! Operations and constants for signed 8-bits integers (`i8` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::i8::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/int.rs b/src/libstd/num/int.rs index d9552ee3340..d6a7fd1660b 100644 --- a/src/libstd/num/int.rs +++ b/src/libstd/num/int.rs @@ -11,11 +11,10 @@ //! Operations and constants for architecture-sized signed integers (`int` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::int::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs index f7813c31d4d..fcdb63f5ad5 100644 --- a/src/libstd/num/int_macros.rs +++ b/src/libstd/num/int_macros.rs @@ -77,6 +77,9 @@ impl ToStrRadix for $T { /// Convert to a string in a given base. #[inline] fn to_str_radix(&self, radix: uint) -> ~str { + use slice::Vector; + use str::StrAllocating; + let mut buf = ::vec::Vec::new(); strconv::int_to_str_bytes_common(*self, radix, strconv::SignNeg, |i| { buf.push(i); diff --git a/src/libstd/num/strconv.rs b/src/libstd/num/strconv.rs index ebcef6ddc5f..4769b17fb2b 100644 --- a/src/libstd/num/strconv.rs +++ b/src/libstd/num/strconv.rs @@ -21,7 +21,7 @@ use ops::{Add, Sub, Mul, Div, Rem, Neg}; use option::{None, Option, Some}; use slice::{CloneableVector, ImmutableVector, MutableVector}; use std::cmp::{Ord, Eq}; -use str::{Str, StrSlice}; +use str::{StrAllocating, StrSlice}; use strbuf::StrBuf; use vec::Vec; diff --git a/src/libstd/num/u16.rs b/src/libstd/num/u16.rs index dd6a838df9b..5c93ca6c36b 100644 --- a/src/libstd/num/u16.rs +++ b/src/libstd/num/u16.rs @@ -11,11 +11,10 @@ //! Operations and constants for unsigned 16-bits integers (`u16` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::u16::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/u32.rs b/src/libstd/num/u32.rs index bb05938969d..436eae7cd14 100644 --- a/src/libstd/num/u32.rs +++ b/src/libstd/num/u32.rs @@ -11,11 +11,10 @@ //! Operations and constants for unsigned 32-bits integers (`u32` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::u32::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/u64.rs b/src/libstd/num/u64.rs index f38806e1527..c654d6fbe31 100644 --- a/src/libstd/num/u64.rs +++ b/src/libstd/num/u64.rs @@ -11,11 +11,10 @@ //! Operations and constants for unsigned 64-bits integer (`u64` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::u64::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/u8.rs b/src/libstd/num/u8.rs index 87fed563a15..7051b9191be 100644 --- a/src/libstd/num/u8.rs +++ b/src/libstd/num/u8.rs @@ -11,11 +11,10 @@ //! Operations and constants for unsigned 8-bits integers (`u8` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::u8::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/uint.rs b/src/libstd/num/uint.rs index 61ab97e86b8..d1c3e96b2c9 100644 --- a/src/libstd/num/uint.rs +++ b/src/libstd/num/uint.rs @@ -11,11 +11,10 @@ //! Operations and constants for architecture-sized unsigned integers (`uint` type) use from_str::FromStr; -use iter::Iterator; use num::{ToStrRadix, FromStrRadix}; use num::strconv; use option::Option; -use slice::{ImmutableVector, OwnedVector}; +use slice::ImmutableVector; use str; pub use core::uint::{BITS, BYTES, MIN, MAX}; diff --git a/src/libstd/num/uint_macros.rs b/src/libstd/num/uint_macros.rs index 814ea0e4274..0795238a49c 100644 --- a/src/libstd/num/uint_macros.rs +++ b/src/libstd/num/uint_macros.rs @@ -78,6 +78,9 @@ impl ToStrRadix for $T { /// Convert to a string in a given base. #[inline] fn to_str_radix(&self, radix: uint) -> ~str { + use slice::Vector; + use str::StrAllocating; + let mut buf = ::vec::Vec::new(); strconv::int_to_str_bytes_common(*self, radix, strconv::SignNone, |i| { buf.push(i); diff --git a/src/libstd/slice.rs b/src/libstd/slice.rs index f769ce5b319..2650c39bdb8 100644 --- a/src/libstd/slice.rs +++ b/src/libstd/slice.rs @@ -279,26 +279,6 @@ impl Iterator<~[T]> for Permutations { } } -#[cfg(not(test))] -impl<'a,T:Clone, V: Vector> Add> for &'a [T] { - #[inline] - fn add(&self, rhs: &V) -> Vec { - let rhs = rhs.as_slice(); - let mut res = Vec::with_capacity(self.len() + rhs.len()); - res.push_all(*self); - res.push_all(rhs); - res - } -} - -#[cfg(not(test))] -impl> Add> for ~[T] { - #[inline] - fn add(&self, rhs: &V) -> Vec { - self.as_slice() + rhs.as_slice() - } -} - /// Extension methods for vector slices with cloneable elements pub trait CloneableVector { /// Copy `self` into a new owned vector @@ -313,6 +293,11 @@ impl<'a, T: Clone> CloneableVector for &'a [T] { /// Returns a copy of `v`. #[inline] fn to_owned(&self) -> ~[T] { + use RawVec = core::raw::Vec; + use rt::global_heap::{malloc_raw, exchange_free}; + use num::{CheckedAdd, CheckedMul}; + use option::Expect; + let len = self.len(); let data_size = len.checked_mul(&mem::size_of::()); let data_size = data_size.expect("overflow in to_owned()"); @@ -2142,15 +2127,6 @@ mod bench { }) } - #[bench] - fn add(b: &mut Bencher) { - let xs: &[int] = [5, ..10]; - let ys: &[int] = [5, ..10]; - b.iter(|| { - xs + ys; - }); - } - #[bench] fn concat(b: &mut Bencher) { let xss: Vec> = Vec::from_fn(100, |i| range(0, i).collect()); diff --git a/src/libstd/str.rs b/src/libstd/str.rs index fb2d85657e8..fb3dcc97287 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -667,12 +667,11 @@ impl<'a> fmt::Show for MaybeOwned<'a> { /// Unsafe operations pub mod raw { use cast; - use iter::Iterator; use libc; use ptr::RawPtr; use raw::Slice; - use slice::ImmutableVector; - use str::is_utf8; + use slice::CloneableVector; + use str::{is_utf8, StrAllocating}; pub use core::str::raw::{from_utf8, c_str_to_static_slice, slice_bytes}; pub use core::str::raw::{slice_unchecked}; @@ -821,8 +820,10 @@ pub trait StrAllocating: Str { /// Copy a slice into a new owned str. #[inline] fn to_owned(&self) -> ~str { + use slice::Vector; + unsafe { - ::cast::transmute(self.as_bytes().to_owned()) + ::cast::transmute(self.as_slice().as_bytes().to_owned()) } } -- cgit 1.4.1-3-g733a5