core: Inherit non-allocating slice functionality
This commit adds a new trait, MutableVectorAllocating, which represents functions on vectors which can allocate. This is another extension trait to slices which should be removed once a lang item exists for the ~ allocation.
This commit is contained in:
parent
be0a11729e
commit
91ede1f09a
7 changed files with 1538 additions and 1556 deletions
|
@ -69,4 +69,5 @@ pub mod iter;
|
||||||
pub mod option;
|
pub mod option;
|
||||||
pub mod raw;
|
pub mod raw;
|
||||||
pub mod char;
|
pub mod char;
|
||||||
|
pub mod slice;
|
||||||
pub mod tuple;
|
pub mod tuple;
|
||||||
|
|
1483
src/libcore/slice.rs
Normal file
1483
src/libcore/slice.rs
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1398,7 +1398,6 @@ impl<T: Iterator<char>> Parser<T> {
|
||||||
'n' => res.push_char('\n'),
|
'n' => res.push_char('\n'),
|
||||||
'r' => res.push_char('\r'),
|
'r' => res.push_char('\r'),
|
||||||
't' => res.push_char('\t'),
|
't' => res.push_char('\t'),
|
||||||
//<<<<<<< HEAD
|
|
||||||
'u' => match try!(self.decode_hex_escape()) {
|
'u' => match try!(self.decode_hex_escape()) {
|
||||||
0xDC00 .. 0xDFFF => return self.error(LoneLeadingSurrogateInHexEscape),
|
0xDC00 .. 0xDFFF => return self.error(LoneLeadingSurrogateInHexEscape),
|
||||||
|
|
||||||
|
|
|
@ -1291,6 +1291,39 @@ impl<T: Show> Show for Option<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, T: Show> Show for &'a [T] {
|
||||||
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||||
|
if f.flags & (1 << (parse::FlagAlternate as uint)) == 0 {
|
||||||
|
try!(write!(f.buf, "["));
|
||||||
|
}
|
||||||
|
let mut is_first = true;
|
||||||
|
for x in self.iter() {
|
||||||
|
if is_first {
|
||||||
|
is_first = false;
|
||||||
|
} else {
|
||||||
|
try!(write!(f.buf, ", "));
|
||||||
|
}
|
||||||
|
try!(write!(f.buf, "{}", *x))
|
||||||
|
}
|
||||||
|
if f.flags & (1 << (parse::FlagAlternate as uint)) == 0 {
|
||||||
|
try!(write!(f.buf, "]"));
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, T: Show> Show for &'a mut [T] {
|
||||||
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||||
|
secret_show(&self.as_slice(), f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Show> Show for ~[T] {
|
||||||
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||||
|
secret_show(&self.as_slice(), f)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Show for () {
|
impl Show for () {
|
||||||
fn fmt(&self, f: &mut Formatter) -> Result {
|
fn fmt(&self, f: &mut Formatter) -> Result {
|
||||||
f.pad("()")
|
f.pad("()")
|
||||||
|
|
|
@ -76,7 +76,7 @@ pub use tuple::{Tuple5, Tuple6, Tuple7, Tuple8};
|
||||||
pub use tuple::{Tuple9, Tuple10, Tuple11, Tuple12};
|
pub use tuple::{Tuple9, Tuple10, Tuple11, Tuple12};
|
||||||
pub use slice::{ImmutableEqVector, ImmutableTotalOrdVector, ImmutableCloneableVector};
|
pub use slice::{ImmutableEqVector, ImmutableTotalOrdVector, ImmutableCloneableVector};
|
||||||
pub use slice::{OwnedVector};
|
pub use slice::{OwnedVector};
|
||||||
pub use slice::{MutableVector, MutableTotalOrdVector};
|
pub use slice::{MutableVector, MutableTotalOrdVector, MutableVectorAllocating};
|
||||||
pub use slice::{Vector, VectorVector, CloneableVector, ImmutableVector};
|
pub use slice::{Vector, VectorVector, CloneableVector, ImmutableVector};
|
||||||
pub use strbuf::StrBuf;
|
pub use strbuf::StrBuf;
|
||||||
pub use vec::Vec;
|
pub use vec::Vec;
|
||||||
|
|
1573
src/libstd/slice.rs
1573
src/libstd/slice.rs
File diff suppressed because it is too large
Load diff
|
@ -30,6 +30,7 @@ use rt::global_heap::{malloc_raw, realloc_raw};
|
||||||
use raw::Slice;
|
use raw::Slice;
|
||||||
use slice::{ImmutableEqVector, ImmutableVector, Items, MutItems, MutableVector};
|
use slice::{ImmutableEqVector, ImmutableVector, Items, MutItems, MutableVector};
|
||||||
use slice::{MutableTotalOrdVector, OwnedVector, Vector};
|
use slice::{MutableTotalOrdVector, OwnedVector, Vector};
|
||||||
|
use slice::{MutableVectorAllocating};
|
||||||
|
|
||||||
/// An owned, growable vector.
|
/// An owned, growable vector.
|
||||||
///
|
///
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue