From fbdf04c0726f2c460e48221d1ae37fe9204b66be Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Sat, 24 Jan 2015 10:44:48 +0100 Subject: [PATCH] Replace deprecated slice_{to,from} with slicing syntax --- mkuutils.rs | 2 +- src/basename/basename.rs | 2 +- src/cat/cat.rs | 18 +++++++++--------- src/chmod/chmod.rs | 4 ++-- src/chroot/chroot.rs | 2 +- src/cksum/cksum.rs | 2 +- src/common/time.rs | 2 +- src/cp/cp.rs | 2 +- src/cut/buffer.rs | 16 +++++++--------- src/cut/cut.rs | 15 +++++++-------- src/env/env.rs | 2 +- src/fmt/linebreak.rs | 6 +++--- src/fmt/parasplit.rs | 26 +++++++++++++------------- src/fold/fold.rs | 10 +++++----- src/hashsum/hashsum.rs | 2 +- src/head/head.rs | 2 +- src/hostname/hostname.rs | 2 +- src/kill/kill.rs | 2 +- src/paste/paste.rs | 2 +- src/seq/seq.rs | 2 +- src/split/split.rs | 6 +++--- src/sum/sum.rs | 4 ++-- src/tail/tail.rs | 10 +++++----- src/test/test.rs | 20 ++++++++++---------- src/timeout/timeout.rs | 2 +- src/truncate/truncate.rs | 6 +++--- src/uniq/uniq.rs | 2 +- 27 files changed, 84 insertions(+), 87 deletions(-) diff --git a/mkuutils.rs b/mkuutils.rs index 7a486020f..7a8bc729e 100644 --- a/mkuutils.rs +++ b/mkuutils.rs @@ -15,7 +15,7 @@ fn main() { let mut crates = String::new(); let mut util_map = String::new(); let mut hashsum = false; - for prog in args.slice_from(2).iter() { + for prog in args[2..].iter() { match prog.as_slice() { "hashsum" | "md5sum" | "sha1sum" | "sha224sum" | "sha256sum" | "sha384sum" | "sha512sum" => { if !hashsum { diff --git a/src/basename/basename.rs b/src/basename/basename.rs index 869fb3e67..9e38d0d12 100644 --- a/src/basename/basename.rs +++ b/src/basename/basename.rs @@ -105,7 +105,7 @@ fn strip_suffix(name: &str, suffix: &str) -> String { } if name.ends_with(suffix) { - return name.slice_to(name.len() - suffix.len()).to_owned(); + return name[..name.len() - suffix.len()].to_owned(); } name.to_owned() diff --git a/src/cat/cat.rs b/src/cat/cat.rs index 4c5df43e6..9e6f179f1 100644 --- a/src/cat/cat.rs +++ b/src/cat/cat.rs @@ -110,7 +110,7 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, Ok(n) if n != 0 => n, _ => break, }; - let in_buf = in_buf.slice_to(n); + let in_buf = &in_buf[..n]; let mut buf_pos = range(0, n); loop { writer.possibly_flush(); @@ -139,9 +139,9 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, (write!(&mut writer, "{0:6}\t", line_counter)).unwrap(); line_counter += 1; } - match in_buf.slice_from(pos).iter().position(|c| *c == '\n' as u8) { + match in_buf[pos..].iter().position(|c| *c == '\n' as u8) { Some(p) => { - writer.write(in_buf.slice(pos, pos + p)).unwrap(); + writer.write(&in_buf[pos..pos + p]).unwrap(); if show_ends { writer.write_u8('$' as u8).unwrap(); } @@ -153,7 +153,7 @@ fn write_lines(files: Vec, number: NumberingMode, squeeze_blank: bool, at_line_start = true; }, None => { - writer.write(in_buf.slice_from(pos)).unwrap(); + writer.write(&in_buf[pos..]).unwrap(); at_line_start = false; break; } @@ -186,7 +186,7 @@ fn write_bytes(files: Vec, number: NumberingMode, squeeze_blank: bool, Ok(n) if n != 0 => n, _ => break, }; - for &byte in in_buf.slice_to(n).iter() { + for &byte in in_buf[..n].iter() { if flush_counter.next().is_none() { writer.possibly_flush(); flush_counter = range(0us, 1024); @@ -256,7 +256,7 @@ fn write_fast(files: Vec) { match reader.read(&mut in_buf) { Ok(n) if n != 0 => { // This interface is completely broken. - writer.write(in_buf.slice_to(n)).unwrap(); + writer.write(&in_buf[..n]).unwrap(); }, _ => break } @@ -312,7 +312,7 @@ impl<'a, W: Writer> UnsafeWriter<'a, W> { fn flush_buf(&mut self) -> IoResult<()> { if self.pos != 0 { - let ret = self.inner.write(self.buf.slice_to(self.pos)); + let ret = self.inner.write(&self.buf[..self.pos]); self.pos = 0; ret } else { @@ -322,7 +322,7 @@ impl<'a, W: Writer> UnsafeWriter<'a, W> { fn possibly_flush(&mut self) { if self.pos > self.threshold { - self.inner.write(self.buf.slice_to(self.pos)).unwrap(); + self.inner.write(&self.buf[..self.pos]).unwrap(); self.pos = 0; } } @@ -335,7 +335,7 @@ fn fail() -> ! { impl<'a, W: Writer> Writer for UnsafeWriter<'a, W> { fn write(&mut self, buf: &[u8]) -> IoResult<()> { - let dst = self.buf.slice_from_mut(self.pos); + let dst = &mut self.buf[self.pos..]; if buf.len() > dst.len() { fail(); } diff --git a/src/chmod/chmod.rs b/src/chmod/chmod.rs index 015dc0433..c6b96d06f 100644 --- a/src/chmod/chmod.rs +++ b/src/chmod/chmod.rs @@ -219,7 +219,7 @@ fn chmod_file(file: &Path, name: &str, changes: bool, quiet: bool, verbose: bool let mut rwx = 0; let mut special = 0; let mut special_changed = false; - for ch in change.slice_from(1).chars() { + for ch in change[1..].chars() { match ch { '+' | '-' | '=' => { for level in levels.chars() { @@ -277,7 +277,7 @@ fn chmod_file(file: &Path, name: &str, changes: bool, quiet: bool, verbose: bool let change = cap.at(4).unwrap(); let ch = change.char_at(0); let (action, slice) = match ch { - '+' | '-' | '=' => (ch, change.slice_from(1)), + '+' | '-' | '=' => (ch, &change[1..]), _ => ('=', change) }; let mode = from_str_radix::(slice, 8).unwrap() as libc::mode_t; // already verified diff --git a/src/chroot/chroot.rs b/src/chroot/chroot.rs index 64a65d154..1c9a67fb0 100644 --- a/src/chroot/chroot.rs +++ b/src/chroot/chroot.rs @@ -89,7 +89,7 @@ pub fn uumain(args: Vec) -> isize { }; vec!(shell, default_option) } - _ => opts.free.slice(1, opts.free.len()).iter().map(|x| x.as_slice()).collect() + _ => opts.free[1..opts.free.len()].iter().map(|x| x.as_slice()).collect() }; set_context(&newroot, &opts); diff --git a/src/cksum/cksum.rs b/src/cksum/cksum.rs index 08ea19131..84fa903c5 100644 --- a/src/cksum/cksum.rs +++ b/src/cksum/cksum.rs @@ -64,7 +64,7 @@ fn cksum(fname: &str) -> IoResult<(u32, usize)> { loop { match rd.read(&mut bytes) { Ok(num_bytes) => { - for &b in bytes.slice_to(num_bytes).iter() { + for &b in bytes[..num_bytes].iter() { crc = crc_update(crc, b); } size += num_bytes; diff --git a/src/common/time.rs b/src/common/time.rs index 3b140528d..7b8f9a505 100644 --- a/src/common/time.rs +++ b/src/common/time.rs @@ -12,7 +12,7 @@ pub fn from_str(string: &str) -> Result { if len == 0 { return Err("empty string".to_string()) } - let slice = string.slice_to(len - 1); + let slice = &string[..len - 1]; let (numstr, times) = match string.char_at(len - 1) { 's' | 'S' => (slice, 1us), 'm' | 'M' => (slice, 60us), diff --git a/src/cp/cp.rs b/src/cp/cp.rs index 213aa486f..cc177dfea 100644 --- a/src/cp/cp.rs +++ b/src/cp/cp.rs @@ -83,7 +83,7 @@ fn copy(matches: getopts::Matches) { panic!() } else { // All but the last argument: - matches.free.slice(0, matches.free.len() - 1).iter() + matches.free[..matches.free.len() - 1].iter() .map(|arg| Path::new(arg.clone())).collect() }; let dest = if matches.free.len() < 2 { diff --git a/src/cut/buffer.rs b/src/cut/buffer.rs index d1de6169c..1053c36c4 100644 --- a/src/cut/buffer.rs +++ b/src/cut/buffer.rs @@ -38,7 +38,7 @@ impl BufReader { #[inline] fn read(&mut self) -> IoResult { - let buffer_fill = self.buffer.slice_from_mut(self.end); + let buffer_fill = &mut self.buffer[self.end..]; match self.reader.read(buffer_fill) { Ok(nread) => { @@ -72,7 +72,7 @@ impl BufReader { _ => () } - let filled_buf = self.buffer.slice(self.start, self.end); + let filled_buf = &self.buffer[self.start..self.end]; match filled_buf.position_elem(&b'\n') { Some(idx) => { @@ -103,14 +103,12 @@ impl Bytes::Select for BufReader { buf_used if bytes < buf_used => { // because the output delimiter should only be placed between // segments check if the byte after bytes is a newline - let buf_slice = self.buffer.slice(self.start, - self.start + bytes + 1); + let buf_slice = &self.buffer[self.start..self.start + bytes + 1]; match buf_slice.position_elem(&b'\n') { Some(idx) => idx, None => { - let segment = self.buffer.slice(self.start, - self.start + bytes); + let segment = &self.buffer[self.start..self.start + bytes]; self.start += bytes; @@ -119,12 +117,12 @@ impl Bytes::Select for BufReader { } } _ => { - let buf_filled = self.buffer.slice(self.start, self.end); + let buf_filled = &self.buffer[self.start..self.end]; match buf_filled.position_elem(&b'\n') { Some(idx) => idx, None => { - let segment = self.buffer.slice(self.start, self.end); + let segment = &self.buffer[self.start..self.end]; self.start = 0; self.end = 0; @@ -136,7 +134,7 @@ impl Bytes::Select for BufReader { }; let new_start = self.start + newline_idx + 1; - let segment = self.buffer.slice(self.start, new_start); + let segment = &self.buffer[self.start..new_start]; self.start = new_start; Bytes::Selected::NewlineFound(segment) diff --git a/src/cut/cut.rs b/src/cut/cut.rs index b5f3b2be9..0d58d315d 100644 --- a/src/cut/cut.rs +++ b/src/cut/cut.rs @@ -168,13 +168,13 @@ fn cut_characters(reader: R, match char_indices.nth(high - low) { Some((high_idx, _)) => { - let segment = line.as_bytes().slice(low_idx, high_idx); + let segment = &line.as_bytes()[low_idx..high_idx]; out.write(segment).unwrap(); } None => { let bytes = line.as_bytes(); - let segment = bytes.slice(low_idx, bytes.len()); + let segment = &bytes[low_idx..]; out.write(segment).unwrap(); @@ -226,8 +226,7 @@ impl<'a> Iterator for Searcher<'a> { } while self.position + self.needle.len() <= self.haystack.len() { - if self.haystack.slice(self.position, - self.position + self.needle.len()) == self.needle { + if &self.haystack[self.position..self.position + self.needle.len()] == self.needle { let match_pos = self.position; self.position += self.needle.len(); return Some((match_pos, match_pos + self.needle.len())); @@ -286,7 +285,7 @@ fn cut_fields_delimiter(reader: R, match delim_search.next() { Some((high_idx, next_low_idx)) => { - let segment = line.slice(low_idx, high_idx); + let segment = &line[low_idx..high_idx]; out.write(segment).unwrap(); @@ -296,7 +295,7 @@ fn cut_fields_delimiter(reader: R, fields_pos = high + 1; } None => { - let segment = line.slice(low_idx, line.len()); + let segment = &line[low_idx..]; out.write(segment).unwrap(); @@ -369,7 +368,7 @@ fn cut_fields(reader: R, match delim_search.nth(high - low) { Some((high_idx, next_low_idx)) => { - let segment = line.slice(low_idx, high_idx); + let segment = &line[low_idx..high_idx]; out.write(segment).unwrap(); @@ -378,7 +377,7 @@ fn cut_fields(reader: R, fields_pos = high + 1; } None => { - let segment = line.slice(low_idx, line.len()); + let segment = &line[low_idx..line.len()]; out.write(segment).unwrap(); diff --git a/src/env/env.rs b/src/env/env.rs index 595711e4c..e27be6050 100644 --- a/src/env/env.rs +++ b/src/env/env.rs @@ -194,7 +194,7 @@ pub fn uumain(args: Vec) -> isize { if opts.program.len() >= 1 { use std::io::process::{Command, InheritFd}; let prog = opts.program[0].clone(); - let args = opts.program.slice_from(1); + let args = &opts.program[1..]; match Command::new(prog).args(args).stdin(InheritFd(0)).stdout(InheritFd(1)).stderr(InheritFd(2)).status() { Ok(exit) => return match exit { diff --git a/src/fmt/linebreak.rs b/src/fmt/linebreak.rs index f4d06b44d..9168f838b 100644 --- a/src/fmt/linebreak.rs +++ b/src/fmt/linebreak.rs @@ -108,7 +108,7 @@ fn accum_words_simple<'a>(args: &mut BreakArgs<'a>, (l, prev_punct): (usize, boo if l + wlen + slen > args.opts.width { write_newline(args.indent_str, args.ostream); - write_with_spaces(winfo.word.slice_from(winfo.word_start), 0, args.ostream); + write_with_spaces(&winfo.word[winfo.word_start..], 0, args.ostream); (args.indent_len + winfo.word_nchars, winfo.ends_punct) } else { write_with_spaces(winfo.word, slen, args.ostream); @@ -145,7 +145,7 @@ fn break_knuth_plass<'a, T: Clone + Iterator>>(mut iter: T // OK, we found the matching word if break_before { write_newline(args.indent_str, args.ostream); - write_with_spaces(winfo.word.slice_from(winfo.word_start), 0, args.ostream); + write_with_spaces(&winfo.word[winfo.word_start..], 0, args.ostream); } else { // breaking after this word, so that means "fresh" is true for the next iteration write_with_spaces(word, slen, args.ostream); @@ -427,7 +427,7 @@ fn compute_slen(uniform: bool, newline: bool, start: bool, punct: bool) -> usize #[inline(always)] fn slice_if_fresh<'a>(fresh: bool, word: &'a str, start: usize, uniform: bool, newline: bool, sstart: bool, punct: bool) -> (usize, &'a str) { if fresh { - (0, word.slice_from(start)) + (0, &word[start..]) } else { (compute_slen(uniform, newline, sstart, punct), word) } diff --git a/src/fmt/parasplit.rs b/src/fmt/parasplit.rs index 749c160fc..0ea12aff1 100644 --- a/src/fmt/parasplit.rs +++ b/src/fmt/parasplit.rs @@ -104,7 +104,7 @@ impl<'a> FileLines<'a> { let mut i = 0; while (i < line.len()) && line.char_at(i).is_whitespace() { i = match line.char_range_at(i) { CharRange { ch: _ , next: nxi } => nxi }; - if line.slice_from(i).starts_with(pfx) { + if line[i..].starts_with(pfx) { return (true, i); } } @@ -165,7 +165,7 @@ impl<'a> Iterator for FileLines<'a> { let (pmatch, poffset) = self.match_prefix(n.as_slice()); if !pmatch { return Some(Line::NoFormatLine(n, false)); - } else if n.as_slice().slice_from(poffset + self.opts.prefix.len()).is_whitespace() { + } else if n.as_slice()[poffset + self.opts.prefix.len()..].is_whitespace() { // if the line matches the prefix, but is blank after, // don't allow lines to be combined through it (that is, // treat it like a blank line, except that since it's @@ -246,7 +246,7 @@ impl<'a> ParagraphStream<'a> { // header field must be nonzero length if colon_posn == 0 { return false; } - return l_slice.slice_to(colon_posn).chars().all(|x| match x as usize { + return l_slice[..colon_posn].chars().all(|x| match x as usize { y if y < 33 || y > 126 => false, _ => true }); @@ -314,7 +314,7 @@ impl<'a> Iterator for ParagraphStream<'a> { indent_len = 2; } else { if self.opts.crown || self.opts.tagged { - init_str.push_str(fl.line.as_slice().slice_to(fl.indent_end)); + init_str.push_str(&fl.line.as_slice()[..fl.indent_end]); init_len = fl.indent_len; init_end = fl.indent_end; } else { @@ -324,7 +324,7 @@ impl<'a> Iterator for ParagraphStream<'a> { // these will be overwritten in the 2nd line of crown or tagged mode, but // we are not guaranteed to get to the 2nd line, e.g., if the next line // is a NoFormatLine or None. Thus, we set sane defaults the 1st time around - indent_str.push_str(fl.line.as_slice().slice_to(fl.indent_end)); + indent_str.push_str(&fl.line.as_slice()[..fl.indent_end]); indent_len = fl.indent_len; indent_end = fl.indent_end; @@ -358,7 +358,7 @@ impl<'a> Iterator for ParagraphStream<'a> { } else { // this is part of the same paragraph, get the indent info from this line indent_str.clear(); - indent_str.push_str(fl.line.as_slice().slice_to(fl.indent_end)); + indent_str.push_str(&fl.line.as_slice()[..fl.indent_end]); indent_len = fl.indent_len; indent_end = fl.indent_end; } @@ -430,17 +430,17 @@ impl<'a> ParaWords<'a> { self.words.extend( if self.opts.crown || self.opts.tagged { // crown and tagged mode has the "init" in the first line, so slice from there - WordSplit::new(self.opts, self.para.lines[0].as_slice().slice_from(self.para.init_end)) + WordSplit::new(self.opts, &self.para.lines[0].as_slice()[self.para.init_end..]) } else { // otherwise we slice from the indent - WordSplit::new(self.opts, self.para.lines[0].as_slice().slice_from(self.para.indent_end)) + WordSplit::new(self.opts, &self.para.lines[0].as_slice()[self.para.indent_end..]) }); if self.para.lines.len() > 1 { let indent_end = self.para.indent_end; let opts = self.opts; self.words.extend( - self.para.lines.iter().skip(1).flat_map(|x| WordSplit::new(opts, x.as_slice().slice_from(indent_end)))); + self.para.lines.iter().skip(1).flat_map(|x| WordSplit::new(opts, &x.as_slice()[indent_end..]))); } } } @@ -521,7 +521,7 @@ impl<'a> Iterator for WordSplit<'a> { let new_line = old_position == 0; // find the start of the next word, and record if we find a tab character - let (before_tab, after_tab, word_start) = match self.analyze_tabs(self.string.slice_from(old_position)) { + let (before_tab, after_tab, word_start) = match self.analyze_tabs(&self.string[old_position..]) { (b, a, Some(s)) => (b, a, s + old_position), (_, _, None) => { self.position = self.length; @@ -534,7 +534,7 @@ impl<'a> Iterator for WordSplit<'a> { // points to whitespace character OR end of string let mut word_nchars = 0; self.position = - match self.string.slice_from(word_start) + match self.string[word_start..] .find(|&mut: x: char| if !x.is_whitespace() { word_nchars += char_width(x); false } else { true }) { None => self.length, Some(s) => s + word_start @@ -551,9 +551,9 @@ impl<'a> Iterator for WordSplit<'a> { let (word, word_start_relative, before_tab, after_tab) = if self.opts.uniform { - (self.string.slice(word_start, self.position), 0, None, 0) + (&self.string[word_start..self.position], 0, None, 0) } else { - (self.string.slice(old_position, self.position), word_start_relative, before_tab, after_tab) + (&self.string[old_position..self.position], word_start_relative, before_tab, after_tab) }; Some(WordInfo { diff --git a/src/fold/fold.rs b/src/fold/fold.rs index 778303d87..39ac619e0 100644 --- a/src/fold/fold.rs +++ b/src/fold/fold.rs @@ -84,8 +84,8 @@ fn handle_obsolete(args: &[String]) -> (Vec, Option) { for (i, arg) in args.iter().enumerate() { let slice = arg.as_slice(); if slice.char_at(0) == '-' && slice.len() > 1 && slice.char_at(1).is_digit(10) { - return (args.slice_to(i).to_vec() + args.slice_from(i + 1), - Some(slice.slice_from(1).to_string())); + return (args[..i].to_vec() + &args[i + 1..], + Some(slice[1..].to_string())); } } (args.to_vec(), None) @@ -122,10 +122,10 @@ fn fold_file(file: BufferedReader, bytes: bool, spaces: bool, while i < len { let width = if len - i >= width { width } else { len - i }; let slice = { - let slice = line.slice(i, i + width); + let slice = &line[i..i + width]; if spaces && i + width < len { match slice.rfind(|&: ch: char| ch.is_whitespace()) { - Some(m) => slice.slice_to(m + 1), + Some(m) => &slice[..m + 1], None => slice } } else { @@ -143,7 +143,7 @@ fn fold_file(file: BufferedReader, bytes: bool, spaces: bool, println!(""); continue; } - line = line.slice_to(line.len() - 1); + line = &line[..line.len() - 1]; len -= 1; } let mut output = String::new(); diff --git a/src/hashsum/hashsum.rs b/src/hashsum/hashsum.rs index c88e0f008..258e4911f 100644 --- a/src/hashsum/hashsum.rs +++ b/src/hashsum/hashsum.rs @@ -302,7 +302,7 @@ fn digest_reader(digest: &mut Box, reader: &mut Reader, binary: bool) -> digest.input(vec.as_slice()); vec.clear(); } else { - digest.input(buffer.slice(0, nread)); + digest.input(&buffer[..nread]); } }, Err(e) => match e.kind { diff --git a/src/head/head.rs b/src/head/head.rs index e4c7bab52..65c5e6286 100644 --- a/src/head/head.rs +++ b/src/head/head.rs @@ -151,7 +151,7 @@ fn obsolete(options: &[String]) -> (Vec, Option) { // If this is the last number if pos == len - 1 { options.remove(a); - let number: Option = from_utf8(current.slice(1,len)).unwrap().parse::(); + let number: Option = from_utf8(¤t[1..len]).unwrap().parse::(); return (options, Some(number.unwrap())); } } diff --git a/src/hostname/hostname.rs b/src/hostname/hostname.rs index 034a8899a..6c4539ffe 100644 --- a/src/hostname/hostname.rs +++ b/src/hostname/hostname.rs @@ -145,7 +145,7 @@ fn xgethostname() -> String { let last_char = name.iter().position(|byte| *byte == 0).unwrap_or(namelen); - str::from_utf8(name.slice_to(last_char)).unwrap().to_string() + str::from_utf8(&name[..last_char]).unwrap().to_string() } #[cfg(any(target_os = "macos", target_os = "freebsd"))] diff --git a/src/kill/kill.rs b/src/kill/kill.rs index 85c4c645d..cdcdcc9f1 100644 --- a/src/kill/kill.rs +++ b/src/kill/kill.rs @@ -107,7 +107,7 @@ fn handle_obsolete(mut args: Vec) -> (Vec, Option) { // this is safe because slice is valid when it is referenced let slice: &str = unsafe { std::mem::transmute(args[i].as_slice()) }; if slice.char_at(0) == '-' && slice.len() > 1 && slice.char_at(1).is_digit(10) { - let val = slice.slice_from(1); + let val = &slice[1..]; match val.parse() { Some(num) => { if signals::is_signal(num) { diff --git a/src/paste/paste.rs b/src/paste/paste.rs index 0de8907c9..980835fb4 100644 --- a/src/paste/paste.rs +++ b/src/paste/paste.rs @@ -99,7 +99,7 @@ fn paste(filenames: Vec, serial: bool, delimiters: &str) { eof_count += 1; } else { match file.read_line() { - Ok(line) => output.push_str(line.as_slice().slice_to(line.len() - 1)), + Ok(line) => output.push_str(&line.as_slice()[..line.len() - 1]), Err(f) => if f.kind == io::EndOfFile { eof[i] = true; eof_count += 1; diff --git a/src/seq/seq.rs b/src/seq/seq.rs index 7e55a8876..3fcc93cca 100644 --- a/src/seq/seq.rs +++ b/src/seq/seq.rs @@ -24,7 +24,7 @@ struct SeqOptions { fn parse_float(mut s: &str) -> Result { if s.starts_with("+") { - s = s.slice_from(1); + s = &s[1..]; } match s.parse() { Some(n) => Ok(n), diff --git a/src/split/split.rs b/src/split/split.rs index 963122142..218796e61 100644 --- a/src/split/split.rs +++ b/src/split/split.rs @@ -204,7 +204,7 @@ impl Splitter for ByteSplitter { self.bytes_to_write = self.saved_bytes_to_write; control.request_new_file = true; self.require_whole_line = false; - return line.as_slice().slice(0, 0).to_string(); + return line.as_slice()[0..0].to_string(); } self.bytes_to_write -= n; if n == 0 { @@ -214,7 +214,7 @@ impl Splitter for ByteSplitter { if self.break_on_line_end && n == line.as_slice().chars().count() { self.require_whole_line = self.break_on_line_end; } - line.as_slice().slice(0, n).to_string() + line.as_slice()[..n].to_string() } } @@ -308,7 +308,7 @@ fn split(settings: &Settings) -> isize { let advance = consumed.as_slice().chars().count(); let clone = control.current_line.clone(); let sl = clone.as_slice(); - control.current_line = sl.slice(advance, sl.chars().count()).to_string(); + control.current_line = sl[advance..sl.chars().count()].to_string(); } 0 } diff --git a/src/sum/sum.rs b/src/sum/sum.rs index dab56c98c..a51709e70 100644 --- a/src/sum/sum.rs +++ b/src/sum/sum.rs @@ -31,7 +31,7 @@ fn bsd_sum(mut reader: Box) -> (usize, u16) { match reader.read(&mut buf) { Ok(n) if n != 0 => { blocks_read += 1; - for &byte in buf.slice_to(n).iter() { + for &byte in buf[..n].iter() { checksum = (checksum >> 1) + ((checksum & 1) << 15); checksum += byte as u16; } @@ -52,7 +52,7 @@ fn sysv_sum(mut reader: Box) -> (usize, u16) { match reader.read(&mut buf) { Ok(n) if n != 0 => { blocks_read += 1; - for &byte in buf.slice_to(n).iter() { + for &byte in buf[..n].iter() { ret += byte as u32; } }, diff --git a/src/tail/tail.rs b/src/tail/tail.rs index 86fc4d67e..02833c9fa 100644 --- a/src/tail/tail.rs +++ b/src/tail/tail.rs @@ -88,7 +88,7 @@ pub fn uumain(args: Vec) -> isize { let mut slice = n.as_slice(); if slice.len() > 0 && slice.char_at(0) == '+' { beginning = true; - slice = slice.slice_from(1); + slice = &slice[1..]; } line_count = match parse_size(slice) { Some(m) => m, @@ -103,7 +103,7 @@ pub fn uumain(args: Vec) -> isize { let mut slice = n.as_slice(); if slice.len() > 0 && slice.char_at(0) == '+' { beginning = true; - slice = slice.slice_from(1); + slice = &slice[1..]; } byte_count = match parse_size(slice) { Some(m) => m, @@ -152,7 +152,7 @@ pub fn uumain(args: Vec) -> isize { fn parse_size(mut size_slice: &str) -> Option { let mut base = if size_slice.len() > 0 && size_slice.char_at(size_slice.len() - 1) == 'B' { - size_slice = size_slice.slice_to(size_slice.len() - 1); + size_slice = &size_slice[..size_slice.len() - 1]; 1000us } else { 1024us @@ -179,7 +179,7 @@ fn parse_size(mut size_slice: &str) -> Option { } }; if has_suffix { - size_slice = size_slice.slice_to(size_slice.len() - 1); + size_slice = &size_slice[..size_slice.len() - 1]; } exp } else { @@ -224,7 +224,7 @@ fn obsolete(options: &[String]) -> (Vec, Option) { // If this is the last number if pos == len - 1 { options.remove(a); - let number: Option = from_utf8(current.slice(1,len)).unwrap().parse(); + let number: Option = from_utf8(¤t[1..len]).unwrap().parse(); return (options, Some(number.unwrap())); } } diff --git a/src/test/test.rs b/src/test/test.rs index 605703e1e..f7fd57179 100644 --- a/src/test/test.rs +++ b/src/test/test.rs @@ -28,16 +28,16 @@ pub fn uumain(_: Vec) -> isize { } let args = if !args[0].ends_with(NAME.as_bytes()) { - args.slice_from(1) + &args[1..] } else { args.as_slice() }; let args = match args[0] { b"[" => match args[args.len() - 1] { - b"]" => args.slice(1, args.len() - 1), + b"]" => &args[1..args.len() - 1], _ => return 2, }, - _ => args.slice(1, args.len()), + _ => &args[1..args.len()], }; let mut error = false; let retval = 1 - parse_expr(args, &mut error) as isize; @@ -54,7 +54,7 @@ fn one(args: &[&[u8]]) -> bool { fn two(args: &[&[u8]], error: &mut bool) -> bool { match args[0] { - b"!" => !one(args.slice_from(1)), + b"!" => !one(&args[1..]), b"-b" => path(args[1], PathCondition::BlockSpecial), b"-c" => path(args[1], PathCondition::CharacterSpecial), b"-d" => path(args[1], PathCondition::Directory), @@ -63,7 +63,7 @@ fn two(args: &[&[u8]], error: &mut bool) -> bool { b"-g" => path(args[1], PathCondition::GroupIDFlag), b"-h" => path(args[1], PathCondition::SymLink), b"-L" => path(args[1], PathCondition::SymLink), - b"-n" => one(args.slice_from(1)), + b"-n" => one(&args[1..]), b"-p" => path(args[1], PathCondition::FIFO), b"-r" => path(args[1], PathCondition::Readable), b"-S" => path(args[1], PathCondition::Socket), @@ -72,7 +72,7 @@ fn two(args: &[&[u8]], error: &mut bool) -> bool { b"-u" => path(args[1], PathCondition::UserIDFlag), b"-w" => path(args[1], PathCondition::Writable), b"-x" => path(args[1], PathCondition::Executable), - b"-z" => !one(args.slice_from(1)), + b"-z" => !one(&args[1..]), _ => { *error = true; false @@ -91,7 +91,7 @@ fn three(args: &[&[u8]], error: &mut bool) -> bool { b"-lt" => integers(args[0], args[2], IntegerCondition::Less), b"-le" => integers(args[0], args[2], IntegerCondition::LessEqual), _ => match args[0] { - b"!" => !two(args.slice_from(1), error), + b"!" => !two(&args[1..], error), _ => { *error = true; false @@ -103,7 +103,7 @@ fn three(args: &[&[u8]], error: &mut bool) -> bool { fn four(args: &[&[u8]], error: &mut bool) -> bool { match args[0] { b"!" => { - !three(args.slice_from(1), error) + !three(&args[1..], error) } _ => { *error = true; @@ -157,7 +157,7 @@ fn dispatch(args: &mut &[&[u8]], error: &mut bool) -> bool { 3 => dispatch_three(args, error), _ => dispatch_four(args, error) }; - *args = (*args).slice_from(idx); + *args = &(*args)[idx..]; val } @@ -229,7 +229,7 @@ fn parse_expr_helper<'a>(hashmap: &HashMap<&'a [u8], Precedence>, }); while !*error && args.len() > 0 && prec as usize >= min_prec as usize { let op = args[0]; - *args = (*args).slice_from(1); + *args = &(*args)[1..]; let mut rhs = dispatch(args, error); while args.len() > 0 { let subprec = *hashmap.get(&args[0]).unwrap_or_else(|| { diff --git a/src/timeout/timeout.rs b/src/timeout/timeout.rs index ad68435a4..de2589a1a 100644 --- a/src/timeout/timeout.rs +++ b/src/timeout/timeout.rs @@ -95,7 +95,7 @@ Usage: return ERR_EXIT_STATUS; } }; - return timeout(matches.free[1].as_slice(), matches.free.slice_from(2), duration, signal, kill_after, foreground, status); + return timeout(matches.free[1].as_slice(), &matches.free[2..], duration, signal, kill_after, foreground, status); } 0 diff --git a/src/truncate/truncate.rs b/src/truncate/truncate.rs index 955b0c66a..aaecf8761 100644 --- a/src/truncate/truncate.rs +++ b/src/truncate/truncate.rs @@ -175,12 +175,12 @@ fn parse_size(size: &str) -> (u64, TruncateMode) { let size: &str = size; size } else { - size.slice_from(1) + &size[1..] }; if slice.char_at(slice.len() - 1).is_alphabetic() { - slice = slice.slice_to(slice.len() - 1); + slice = &slice[..slice.len() - 1]; if slice.len() > 0 && slice.char_at(slice.len() - 1).is_alphabetic() { - slice = slice.slice_to(slice.len() - 1); + slice = &slice[..slice.len() - 1]; } } slice diff --git a/src/uniq/uniq.rs b/src/uniq/uniq.rs index 72a44835c..65c7930d3 100644 --- a/src/uniq/uniq.rs +++ b/src/uniq/uniq.rs @@ -68,7 +68,7 @@ impl Uniq { Some(i) => min(slice_start + i, len), None => len }; - let sliced = line.as_slice().slice(slice_start, slice_stop).to_string(); + let sliced = line.as_slice()[slice_start..slice_stop].to_string(); if self.ignore_case { sliced.into_ascii_uppercase() } else {