use libc;
use option::{None, Option, Some};
use str;
-use str::{StrSlice, StrVector};
+use str::{Str, StrSlice, StrVector};
use to_str::ToStr;
use ascii::{AsciiCast, AsciiStr};
use old_iter::BaseIter;
fn push_rel(&self, (&Self)) -> Self;
/// Returns a new Path consisting of the path given by the given vector
/// of strings, relative to `self`.
- fn push_many(&self, (&[~str])) -> Self;
+ fn push_many<S: Str>(&self, (&[S])) -> Self;
/// Identical to `dir_path` except in the case where `self` has only one
/// component. In this case, `pop` returns the empty path.
fn pop(&self) -> Self;
false
}
- fn push_many(&self, cs: &[~str]) -> PosixPath {
+ fn push_many<S: Str>(&self, cs: &[S]) -> PosixPath {
let mut v = copy self.components;
for cs.each |e| {
- for e.split_iter(windows::is_sep).advance |s| {
+ for e.as_slice().split_iter(windows::is_sep).advance |s| {
if !s.is_empty() {
v.push(s.to_owned())
}
}
}
- fn push_many(&self, cs: &[~str]) -> WindowsPath {
+ fn push_many<S: Str>(&self, cs: &[S]) -> WindowsPath {
let mut v = copy self.components;
for cs.each |e| {
- for e.split_iter(windows::is_sep).advance |s| {
+ for e.as_slice().split_iter(windows::is_sep).advance |s| {
if !s.is_empty() {
v.push(s.to_owned())
}
pub use path::WindowsPath;
pub use ptr::RawPtr;
pub use ascii::{Ascii, AsciiCast, OwnedAsciiCast, AsciiStr};
-pub use str::{StrVector, StrSlice, OwnedStr, StrUtil, NullTerminatedStr};
+pub use str::{Str, StrVector, StrSlice, OwnedStr, StrUtil, NullTerminatedStr};
pub use from_str::{FromStr};
pub use to_bytes::IterBytes;
pub use to_str::{ToStr, ToStrConsume};
}
#[cfg(not(test))]
-impl<'self> Equiv<~str> for &'self str {
+impl<'self, S: Str> Equiv<S> for &'self str {
#[inline(always)]
- fn equiv(&self, other: &~str) -> bool { eq_slice(*self, *other) }
+ fn equiv(&self, other: &S) -> bool { eq_slice(*self, other.as_slice()) }
}
+#[cfg(not(test))]
+impl<'self, S: Str> Equiv<S> for @str {
+ #[inline(always)]
+ fn equiv(&self, other: &S) -> bool { eq_slice(*self, other.as_slice()) }
+}
+
+#[cfg(not(test))]
+impl<'self, S: Str> Equiv<S> for ~str {
+ #[inline(always)]
+ fn equiv(&self, other: &S) -> bool { eq_slice(*self, other.as_slice()) }
+}
+
/*
Section: Iterating through strings