Switched over a bunch of splitting funktions to non-allocating iterators
This commit is contained in:
parent
d74606ead6
commit
b9de2b5787
13 changed files with 135 additions and 98 deletions
|
@ -381,7 +381,8 @@ impl ToStr for PosixPath {
|
|||
impl GenericPath for PosixPath {
|
||||
|
||||
fn from_str(s: &str) -> PosixPath {
|
||||
let mut components = str::split_nonempty(s, |c| c == '/');
|
||||
let mut components = ~[];
|
||||
for str::each_split_nonempty(s, |c| c == '/') |s| { components.push(s.to_owned()) }
|
||||
let is_absolute = (s.len() != 0 && s[0] == '/' as u8);
|
||||
return PosixPath { is_absolute: is_absolute,
|
||||
components: components }
|
||||
|
@ -504,9 +505,10 @@ impl GenericPath for PosixPath {
|
|||
fn push_many(&self, cs: &[~str]) -> PosixPath {
|
||||
let mut v = copy self.components;
|
||||
for cs.each |e| {
|
||||
let mut ss = str::split_nonempty(
|
||||
*e,
|
||||
|c| windows::is_sep(c as u8));
|
||||
let mut ss = ~[];
|
||||
for str::each_split_nonempty(*e, |c| windows::is_sep(c as u8)) |s| {
|
||||
ss.push(s.to_owned())
|
||||
}
|
||||
unsafe { v.push_all_move(ss); }
|
||||
}
|
||||
PosixPath { is_absolute: self.is_absolute,
|
||||
|
@ -515,7 +517,10 @@ impl GenericPath for PosixPath {
|
|||
|
||||
fn push(&self, s: &str) -> PosixPath {
|
||||
let mut v = copy self.components;
|
||||
let mut ss = str::split_nonempty(s, |c| windows::is_sep(c as u8));
|
||||
let mut ss = ~[];
|
||||
for str::each_split_nonempty(s, |c| windows::is_sep(c as u8)) |s| {
|
||||
ss.push(s.to_owned())
|
||||
}
|
||||
unsafe { v.push_all_move(ss); }
|
||||
PosixPath { components: v, ..copy *self }
|
||||
}
|
||||
|
@ -590,8 +595,10 @@ impl GenericPath for WindowsPath {
|
|||
}
|
||||
}
|
||||
|
||||
let mut components =
|
||||
str::split_nonempty(rest, |c| windows::is_sep(c as u8));
|
||||
let mut components = ~[];
|
||||
for str::each_split_nonempty(rest, |c| windows::is_sep(c as u8)) |s| {
|
||||
components.push(s.to_owned())
|
||||
}
|
||||
let is_absolute = (rest.len() != 0 && windows::is_sep(rest[0]));
|
||||
return WindowsPath { host: host,
|
||||
device: device,
|
||||
|
@ -759,9 +766,10 @@ impl GenericPath for WindowsPath {
|
|||
fn push_many(&self, cs: &[~str]) -> WindowsPath {
|
||||
let mut v = copy self.components;
|
||||
for cs.each |e| {
|
||||
let mut ss = str::split_nonempty(
|
||||
*e,
|
||||
|c| windows::is_sep(c as u8));
|
||||
let mut ss = ~[];
|
||||
for str::each_split_nonempty(*e, |c| windows::is_sep(c as u8)) |s| {
|
||||
ss.push(s.to_owned())
|
||||
}
|
||||
unsafe { v.push_all_move(ss); }
|
||||
}
|
||||
// tedious, but as-is, we can't use ..self
|
||||
|
@ -775,7 +783,10 @@ impl GenericPath for WindowsPath {
|
|||
|
||||
fn push(&self, s: &str) -> WindowsPath {
|
||||
let mut v = copy self.components;
|
||||
let mut ss = str::split_nonempty(s, |c| windows::is_sep(c as u8));
|
||||
let mut ss = ~[];
|
||||
for str::each_split_nonempty(s, |c| windows::is_sep(c as u8)) |s| {
|
||||
ss.push(s.to_owned())
|
||||
}
|
||||
unsafe { v.push_all_move(ss); }
|
||||
return WindowsPath { components: v, ..copy *self }
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue