From b35d1a8368c7afe0d43dd3e451e884c035afc517 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Mon, 14 Jul 2014 11:03:23 +1200 Subject: [PATCH 1/2] Implement Index and IndexMut for Vec --- src/libcollections/vec.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 1e96588dac5f8..7cafe4e54c1cd 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -363,6 +363,21 @@ impl Clone for Vec { } } +impl Index for Vec { + #[inline] + fn index<'a>(&'a self, index: &uint) -> &'a T { + self.get(*index) + } +} + +// FIXME(#12825) Indexing will always try IndexMut first and that causes issues. +/*impl IndexMut for Vec { + #[inline] + fn index_mut<'a>(&'a mut self, index: &uint) -> &'a mut T { + self.get_mut(*index) + } +}*/ + impl FromIterator for Vec { #[inline] fn from_iter>(mut iterator: I) -> Vec { @@ -1847,6 +1862,19 @@ mod tests { v.truncate(0); } + #[test] + fn test_index() { + let vec = vec!(1i, 2, 3); + assert!(vec[1] == 2); + } + + #[test] + #[should_fail] + fn test_index_out_of_bounds() { + let vec = vec!(1i, 2, 3); + let _ = vec[3]; + } + #[bench] fn bench_new(b: &mut Bencher) { b.iter(|| { From aa760a849ee9f4d6817c81aad25fdc7990e894ed Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Tue, 15 Jul 2014 11:37:25 +1200 Subject: [PATCH 2/2] deprecate Vec::get --- src/compiletest/compiletest.rs | 6 +++--- src/compiletest/runtest.rs | 24 +++++++++++----------- src/doc/intro.md | 14 ++++++------- src/doc/tutorial.md | 2 +- src/libcollections/vec.rs | 5 ++++- src/libdebug/repr.rs | 4 ++-- src/libgetopts/lib.rs | 34 +++++++++++++++---------------- src/libglob/lib.rs | 12 +++++------ src/libgraphviz/lib.rs | 8 ++++---- src/libregex/parse.rs | 10 ++++----- src/libregex/re.rs | 12 +++++------ src/libregex/vm.rs | 12 +++++------ src/librustdoc/clean/mod.rs | 2 +- src/librustdoc/html/format.rs | 2 +- src/librustdoc/html/render.rs | 2 +- src/librustdoc/lib.rs | 2 +- src/librustdoc/markdown.rs | 2 +- src/librustdoc/passes.rs | 2 +- src/libserialize/json.rs | 2 +- src/libsync/mpmc_bounded_queue.rs | 4 ++-- src/libsync/raw.rs | 4 ++-- src/libterm/terminfo/parm.rs | 6 +++--- src/libtest/lib.rs | 2 +- src/libtest/stats.rs | 2 +- src/libuuid/lib.rs | 4 ++-- 25 files changed, 91 insertions(+), 88 deletions(-) diff --git a/src/compiletest/compiletest.rs b/src/compiletest/compiletest.rs index 07e331c2a3963..583d9249b3547 100644 --- a/src/compiletest/compiletest.rs +++ b/src/compiletest/compiletest.rs @@ -89,9 +89,9 @@ pub fn parse_config(args: Vec ) -> Config { optflag("h", "help", "show this message")); assert!(!args.is_empty()); - let argv0 = (*args.get(0)).clone(); + let argv0 = args[0].clone(); let args_ = args.tail(); - if args.get(1).as_slice() == "-h" || args.get(1).as_slice() == "--help" { + if args[1].as_slice() == "-h" || args[1].as_slice() == "--help" { let message = format!("Usage: {} [OPTIONS] [TESTNAME...]", argv0); println!("{}", getopts::usage(message.as_slice(), groups.as_slice())); println!(""); @@ -116,7 +116,7 @@ pub fn parse_config(args: Vec ) -> Config { } let filter = if !matches.free.is_empty() { - let s = matches.free.get(0).as_slice(); + let s = matches.free[0].as_slice(); match regex::Regex::new(s) { Ok(re) => Some(re), Err(e) => { diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 44763f2cf4b33..c3ac40e8f08d4 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -167,7 +167,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) { let proc_res = print_source(config, props, testfile, - (*srcs.get(round)).to_string(), + srcs[round].to_string(), "normal"); if !proc_res.status.success() { @@ -187,9 +187,9 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) { let s = File::open(&filepath).read_to_end().unwrap(); String::from_utf8(s).unwrap() } - None => { (*srcs.get(srcs.len() - 2u)).clone() } + None => { srcs[srcs.len() - 2u].clone() } }; - let mut actual = (*srcs.get(srcs.len() - 1u)).clone(); + let mut actual = srcs[srcs.len() - 1u].clone(); if props.pp_exact.is_some() { // Now we have to care about line endings @@ -209,7 +209,7 @@ fn run_pretty_test(config: &Config, props: &TestProps, testfile: &Path) { if props.no_pretty_expanded { return } // additionally, run `--pretty expanded` and try to build it. - let proc_res = print_source(config, props, testfile, (*srcs.get(round)).clone(), "expanded"); + let proc_res = print_source(config, props, testfile, srcs[round].clone(), "expanded"); if !proc_res.status.success() { fatal_proc_rec("pretty-printing (expanded) failed", &proc_res); } @@ -702,7 +702,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String]) let mut rest = line.trim(); let mut first = true; let mut failed = false; - for frag in check_fragments.get(i).iter() { + for frag in check_fragments[i].iter() { let found = if first { if rest.starts_with(frag.as_slice()) { Some(0) @@ -752,7 +752,7 @@ fn check_error_patterns(props: &TestProps, } let mut next_err_idx = 0u; - let mut next_err_pat = props.error_patterns.get(next_err_idx); + let mut next_err_pat = &props.error_patterns[next_err_idx]; let mut done = false; let output_to_check = if props.check_stdout { format!("{}{}", proc_res.stdout, proc_res.stderr) @@ -761,14 +761,14 @@ fn check_error_patterns(props: &TestProps, }; for line in output_to_check.as_slice().lines() { if line.contains(next_err_pat.as_slice()) { - debug!("found error pattern {}", *next_err_pat); + debug!("found error pattern {}", next_err_pat); next_err_idx += 1u; if next_err_idx == props.error_patterns.len() { debug!("found all error patterns"); done = true; break; } - next_err_pat = props.error_patterns.get(next_err_idx); + next_err_pat = &props.error_patterns[next_err_idx]; } } if done { return; } @@ -847,13 +847,13 @@ fn check_expected_errors(expected_errors: Vec , for line in proc_res.stderr.as_slice().lines() { let mut was_expected = false; for (i, ee) in expected_errors.iter().enumerate() { - if !*found_flags.get(i) { + if !found_flags[i] { debug!("prefix={} ee.kind={} ee.msg={} line={}", - prefixes.get(i).as_slice(), + prefixes[i].as_slice(), ee.kind, ee.msg, line); - if prefix_matches(line, prefixes.get(i).as_slice()) && + if prefix_matches(line, prefixes[i].as_slice()) && line.contains(ee.kind.as_slice()) && line.contains(ee.msg.as_slice()) { *found_flags.get_mut(i) = true; @@ -877,7 +877,7 @@ fn check_expected_errors(expected_errors: Vec , for (i, &flag) in found_flags.iter().enumerate() { if !flag { - let ee = expected_errors.get(i); + let ee = &expected_errors[i]; fatal_proc_rec(format!("expected {} on line {} not found: {}", ee.kind, ee.line, ee.msg).as_slice(), proc_res); diff --git a/src/doc/intro.md b/src/doc/intro.md index e8928cb55056c..7dcf8486181ed 100644 --- a/src/doc/intro.md +++ b/src/doc/intro.md @@ -205,7 +205,7 @@ fn main() { spawn(proc() { let numbers = rx.recv(); - println!("{}", *numbers.get(0)); + println!("{}", numbers[0]); }) } ``` @@ -244,11 +244,11 @@ fn main() { spawn(proc() { let numbers = rx.recv(); - println!("{}", numbers.get(0)); + println!("{}", numbers[0]); }); // Try to print a number from the original task - println!("{}", *numbers.get(0)); + println!("{}", numbers[0]); } ``` @@ -256,7 +256,7 @@ The compiler will produce an error indicating that the value is no longer in sco ```text concurrency.rs:12:20: 12:27 error: use of moved value: 'numbers' -concurrency.rs:12 println!("{}", numbers.get(0)); +concurrency.rs:12 println!("{}", numbers[0]); ^~~~~~~ ``` @@ -276,7 +276,7 @@ fn main() { spawn(proc() { let numbers = rx.recv(); - println!("{:d}", *numbers.get(num as uint)); + println!("{:d}", numbers[num as uint]); }) } } @@ -309,7 +309,7 @@ fn main() { spawn(proc() { let numbers = rx.recv(); - println!("{:d}", *numbers.get(num as uint)); + println!("{:d}", (*numbers)[num as uint]); }) } } @@ -364,7 +364,7 @@ fn main() { // See: https://github.com/rust-lang/rust/issues/6515 *numbers.get_mut(num as uint) = *numbers.get_mut(num as uint) + 1; - println!("{}", *numbers.get(num as uint)); + println!("{}", (*numbers)[num as uint]); // When `numbers` goes out of scope the lock is dropped }) diff --git a/src/doc/tutorial.md b/src/doc/tutorial.md index 10f67876e508f..e0f0bbd6c9f2b 100644 --- a/src/doc/tutorial.md +++ b/src/doc/tutorial.md @@ -2427,7 +2427,7 @@ as in this version of `print_all` that copies elements. fn print_all(printable_things: Vec) { let mut i = 0; while i < printable_things.len() { - let copy_of_thing = printable_things.get(i).clone(); + let copy_of_thing = printable_things[i].clone(); copy_of_thing.print(); i += 1; } diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 7cafe4e54c1cd..23c31ee990641 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -42,7 +42,7 @@ pub static PTR_MARKER: u8 = 0; /// vec.push(2i); /// /// assert_eq!(vec.len(), 2); -/// assert_eq!(vec.get(0), &1); +/// assert_eq!(vec[0], 1); /// /// assert_eq!(vec.pop(), Some(2)); /// assert_eq!(vec.len(), 1); @@ -746,9 +746,12 @@ impl Vec { /// # Example /// /// ```rust + /// #![allow(deprecated)] + /// /// let vec = vec!(1i, 2, 3); /// assert!(vec.get(1) == &2); /// ``` + #[deprecated="prefer using indexing, e.g., vec[0]"] #[inline] pub fn get<'a>(&'a self, index: uint) -> &'a T { &self.as_slice()[index] diff --git a/src/libdebug/repr.rs b/src/libdebug/repr.rs index 9755d54a13205..b72cc43b28c60 100644 --- a/src/libdebug/repr.rs +++ b/src/libdebug/repr.rs @@ -466,7 +466,7 @@ impl<'a> TyVisitor for ReprVisitor<'a> { _offset: uint, inner: *const TyDesc) -> bool { - match *self.var_stk.get(self.var_stk.len() - 1) { + match self.var_stk[self.var_stk.len() - 1] { Matched => { if i != 0 { try!(self, self.writer.write(", ".as_bytes())); @@ -484,7 +484,7 @@ impl<'a> TyVisitor for ReprVisitor<'a> { _disr_val: Disr, n_fields: uint, _name: &str) -> bool { - match *self.var_stk.get(self.var_stk.len() - 1) { + match self.var_stk[self.var_stk.len() - 1] { Matched => { if n_fields > 0 { try!(self, self.writer.write([')' as u8])); diff --git a/src/libgetopts/lib.rs b/src/libgetopts/lib.rs index eaec31a45f421..bf39fd566e52d 100644 --- a/src/libgetopts/lib.rs +++ b/src/libgetopts/lib.rs @@ -51,7 +51,7 @@ //! fn main() { //! let args: Vec = os::args(); //! -//! let program = args.get(0).clone(); +//! let program = args[0].clone(); //! //! let opts = [ //! optopt("o", "", "set output file name", "NAME"), @@ -67,7 +67,7 @@ //! } //! let output = matches.opt_str("o"); //! let input = if !matches.free.is_empty() { -//! (*matches.free.get(0)).clone() +//! matches.free[0].clone() //! } else { //! print_usage(program.as_slice(), opts); //! return; @@ -275,7 +275,7 @@ impl OptGroup { impl Matches { fn opt_vals(&self, nm: &str) -> Vec { match find_opt(self.opts.as_slice(), Name::from_str(nm)) { - Some(id) => (*self.vals.get(id)).clone(), + Some(id) => self.vals[id].clone(), None => fail!("No option '{}' defined", nm) } } @@ -285,7 +285,7 @@ impl Matches { if vals.is_empty() { None } else { - Some((*vals.get(0)).clone()) + Some(vals[0].clone()) } } @@ -304,7 +304,7 @@ impl Matches { for nm in names.iter() { match find_opt(self.opts.as_slice(), Name::from_str(nm.as_slice())) { - Some(id) if !self.vals.get(id).is_empty() => return true, + Some(id) if !self.vals[id].is_empty() => return true, _ => (), }; } @@ -344,8 +344,8 @@ impl Matches { if vals.is_empty() { return None::; } - match vals.get(0) { - &Val(ref s) => Some((*s).clone()), + match vals[0] { + Val(ref s) => Some((*s).clone()), _ => None } } @@ -361,8 +361,8 @@ impl Matches { if vals.is_empty() { return None; } - match vals.get(0) { - &Val(ref s) => Some((*s).clone()), + match vals[0] { + Val(ref s) => Some((*s).clone()), _ => Some(def.to_string()) } } @@ -560,8 +560,8 @@ pub fn getopts(args: &[String], optgrps: &[OptGroup]) -> Result { names = vec!(Long(tail.to_string())); } else { names = - vec!(Long((*tail_eq.get(0)).to_string())); - i_arg = Some((*tail_eq.get(1)).to_string()); + vec!(Long(tail_eq[0].to_string())); + i_arg = Some(tail_eq[1].to_string()); } } else { let mut j = 1; @@ -583,7 +583,7 @@ pub fn getopts(args: &[String], optgrps: &[OptGroup]) -> Result { None => { let arg_follows = last_valid_opt_id.is_some() && - match opts.get(last_valid_opt_id.unwrap()) + match opts[last_valid_opt_id.unwrap()] .hasarg { Yes | Maybe => true, @@ -609,7 +609,7 @@ pub fn getopts(args: &[String], optgrps: &[OptGroup]) -> Result { Some(id) => id, None => return Err(UnrecognizedOption(nm.to_string())) }; - match opts.get(optid).hasarg { + match opts[optid].hasarg { No => { if !i_arg.is_none() { return Err(UnexpectedArgument(nm.to_string())); @@ -646,16 +646,16 @@ pub fn getopts(args: &[String], optgrps: &[OptGroup]) -> Result { } i = 0u; while i < n_opts { - let n = vals.get(i).len(); - let occ = opts.get(i).occur; + let n = vals[i].len(); + let occ = opts[i].occur; if occ == Req { if n == 0 { - return Err(OptionMissing(opts.get(i).name.to_string())); + return Err(OptionMissing(opts[i].name.to_string())); } } if occ != Multi { if n > 1 { - return Err(OptionDuplicated(opts.get(i).name.to_string())); + return Err(OptionDuplicated(opts[i].name.to_string())); } } i += 1; diff --git a/src/libglob/lib.rs b/src/libglob/lib.rs index c28eb51d59d44..d539283f0a717 100644 --- a/src/libglob/lib.rs +++ b/src/libglob/lib.rs @@ -154,7 +154,7 @@ impl Iterator for Paths { if self.require_dir && !path.is_dir() { continue; } return Some(path); } - let ref pattern = *self.dir_patterns.get(idx); + let ref pattern = self.dir_patterns[idx]; if pattern.matches_with(match path.filename_str() { // this ugly match needs to go here to avoid a borrowck error @@ -250,21 +250,21 @@ impl Pattern { let mut i = 0; while i < chars.len() { - match *chars.get(i) { + match chars[i] { '?' => { tokens.push(AnyChar); i += 1; } '*' => { // *, **, ***, ****, ... are all equivalent - while i < chars.len() && *chars.get(i) == '*' { + while i < chars.len() && chars[i] == '*' { i += 1; } tokens.push(AnySequence); } '[' => { - if i <= chars.len() - 4 && *chars.get(i + 1) == '!' { + if i <= chars.len() - 4 && chars[i + 1] == '!' { match chars.slice_from(i + 3).position_elem(&']') { None => (), Some(j) => { @@ -276,7 +276,7 @@ impl Pattern { } } } - else if i <= chars.len() - 3 && *chars.get(i + 1) != '!' { + else if i <= chars.len() - 3 && chars[i + 1] != '!' { match chars.slice_from(i + 2).position_elem(&']') { None => (), Some(j) => { @@ -507,7 +507,7 @@ fn fill_todo(todo: &mut Vec<(Path, uint)>, patterns: &[Pattern], idx: uint, path // the current and parent directory respectively requires that // the pattern has a leading dot, even if the `MatchOptions` field // `require_literal_leading_dot` is not set. - if pattern.tokens.len() > 0 && pattern.tokens.get(0) == &Char('.') { + if pattern.tokens.len() > 0 && pattern.tokens[0] == Char('.') { for &special in [".", ".."].iter() { if pattern.matches_with(special, options) { add(todo, path.join(special)); diff --git a/src/libgraphviz/lib.rs b/src/libgraphviz/lib.rs index a3653fa973590..24698d09f56e5 100644 --- a/src/libgraphviz/lib.rs +++ b/src/libgraphviz/lib.rs @@ -168,7 +168,7 @@ impl<'a> dot::Labeller<'a, Nd, Ed<'a>> for Graph { dot::Id::new(format!("N{}", n)) } fn node_label<'a>(&'a self, n: &Nd) -> dot::LabelText<'a> { - dot::LabelStr(str::Slice(self.nodes.get(*n).as_slice())) + dot::LabelStr(str::Slice(self.nodes[*n].as_slice())) } fn edge_label<'a>(&'a self, _: &Ed) -> dot::LabelText<'a> { dot::LabelStr(str::Slice("⊆")) @@ -225,7 +225,7 @@ impl<'a> dot::Labeller<'a, Nd<'a>, Ed<'a>> for Graph { } fn node_label<'a>(&'a self, n: &Nd<'a>) -> dot::LabelText<'a> { let &(i, _) = n; - dot::LabelStr(str::Slice(self.nodes.get(i).as_slice())) + dot::LabelStr(str::Slice(self.nodes[i].as_slice())) } fn edge_label<'a>(&'a self, _: &Ed<'a>) -> dot::LabelText<'a> { dot::LabelStr(str::Slice("⊆")) @@ -238,8 +238,8 @@ impl<'a> dot::GraphWalk<'a, Nd<'a>, Ed<'a>> for Graph { } fn edges(&'a self) -> dot::Edges<'a,Ed<'a>> { self.edges.iter() - .map(|&(i,j)|((i, self.nodes.get(i).as_slice()), - (j, self.nodes.get(j).as_slice()))) + .map(|&(i,j)|((i, self.nodes[i].as_slice()), + (j, self.nodes[j].as_slice()))) .collect() } fn source(&self, e: &Ed<'a>) -> Nd<'a> { let &(s,_) = e; s } diff --git a/src/libregex/parse.rs b/src/libregex/parse.rs index 109d32f69b967..d53fed7aa80fc 100644 --- a/src/libregex/parse.rs +++ b/src/libregex/parse.rs @@ -235,7 +235,7 @@ impl<'a> Parser<'a> { // left paren, let's grab the old flags and see if we // need a capture. let (cap, cap_name, oldflags) = { - let paren = self.stack.get(altfrom-1); + let paren = &self.stack[altfrom-1]; (paren.capture(), paren.capture_name(), paren.flags()) }; try!(self.alternate(altfrom)); @@ -464,7 +464,7 @@ impl<'a> Parser<'a> { Some(i) => i, None => return None, }; - if *self.chars.get(closer-1) != ':' { + if self.chars[closer-1] != ':' { return None } if closer - self.chari <= 3 { @@ -519,7 +519,7 @@ impl<'a> Parser<'a> { max = Some(min); } else { let pieces: Vec<&str> = inner.as_slice().splitn(',', 1).collect(); - let (smin, smax) = (*pieces.get(0), *pieces.get(1)); + let (smin, smax) = (pieces[0], pieces[1]); if smin.len() == 0 { return self.err("Max repetitions cannot be specified \ without min repetitions.") @@ -931,7 +931,7 @@ impl<'a> Parser<'a> { if self.chari + offset >= self.chars.len() { return None } - Some(*self.chars.get(self.chari + offset)) + Some(self.chars[self.chari + offset]) } fn peek_is(&self, offset: uint, is: char) -> bool { @@ -939,7 +939,7 @@ impl<'a> Parser<'a> { } fn cur(&self) -> char { - *self.chars.get(self.chari) + self.chars[self.chari] } fn slice(&self, start: uint, end: uint) -> String { diff --git a/src/libregex/re.rs b/src/libregex/re.rs index 054cbb0fcd63d..8e4145b2a3198 100644 --- a/src/libregex/re.rs +++ b/src/libregex/re.rs @@ -207,7 +207,7 @@ impl Regex { pub fn find(&self, text: &str) -> Option<(uint, uint)> { let caps = exec(self, Location, text); if has_match(&caps) { - Some((caps.get(0).unwrap(), caps.get(1).unwrap())) + Some((caps[0].unwrap(), caps[1].unwrap())) } else { None } @@ -699,11 +699,11 @@ impl<'t> Captures<'t> { /// original string matched. pub fn pos(&self, i: uint) -> Option<(uint, uint)> { let (s, e) = (i * 2, i * 2 + 1); - if e >= self.locs.len() || self.locs.get(s).is_none() { + if e >= self.locs.len() || self.locs[s].is_none() { // VM guarantees that each pair of locations are both Some or None. return None } - Some((self.locs.get(s).unwrap(), self.locs.get(e).unwrap())) + Some((self.locs[s].unwrap(), self.locs[e].unwrap())) } /// Returns the matched string for the capture group `i`. @@ -851,7 +851,7 @@ impl<'r, 't> Iterator> for FindCaptures<'r, 't> { if !has_match(&caps) { return None } else { - (caps.get(0).unwrap(), caps.get(1).unwrap()) + (caps[0].unwrap(), caps[1].unwrap()) }; // Don't accept empty matches immediately following a match. @@ -893,7 +893,7 @@ impl<'r, 't> Iterator<(uint, uint)> for FindMatches<'r, 't> { if !has_match(&caps) { return None } else { - (caps.get(0).unwrap(), caps.get(1).unwrap()) + (caps[0].unwrap(), caps[1].unwrap()) }; // Don't accept empty matches immediately following a match. @@ -922,5 +922,5 @@ fn exec_slice(re: &Regex, which: MatchKind, #[inline] fn has_match(caps: &CaptureLocs) -> bool { - caps.len() >= 2 && caps.get(0).is_some() && caps.get(1).is_some() + caps.len() >= 2 && caps[0].is_some() && caps[1].is_some() } diff --git a/src/libregex/vm.rs b/src/libregex/vm.rs index 782078ced497b..b37000df02dbe 100644 --- a/src/libregex/vm.rs +++ b/src/libregex/vm.rs @@ -123,7 +123,7 @@ impl<'r, 't> Nfa<'r, 't> { // Make sure multi-line mode isn't enabled for it, otherwise we can't // drop the initial .*? let prefix_anchor = - match *self.prog.insts.get(1) { + match self.prog.insts[1] { EmptyBegin(flags) if flags & FLAG_MULTI == 0 => true, _ => false, }; @@ -192,7 +192,7 @@ impl<'r, 't> Nfa<'r, 't> { fn step(&self, groups: &mut [Option], nlist: &mut Threads, caps: &mut [Option], pc: uint) -> StepState { - match *self.prog.insts.get(pc) { + match self.prog.insts[pc] { Match => { match self.which { Exists => { @@ -259,7 +259,7 @@ impl<'r, 't> Nfa<'r, 't> { // // We make a minor optimization by indicating that the state is "empty" // so that its capture groups are not filled in. - match *self.prog.insts.get(pc) { + match self.prog.insts[pc] { EmptyBegin(flags) => { let multi = flags & FLAG_MULTI > 0; nlist.add(pc, groups, true); @@ -481,8 +481,8 @@ impl Threads { #[inline] fn contains(&self, pc: uint) -> bool { - let s = *self.sparse.get(pc); - s < self.size && self.queue.get(s).pc == pc + let s = self.sparse[pc]; + s < self.size && self.queue[s].pc == pc } #[inline] @@ -492,7 +492,7 @@ impl Threads { #[inline] fn pc(&self, i: uint) -> uint { - self.queue.get(i).pc + self.queue[i].pc } #[inline] diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index fdf98f392a743..54053d215dc3b 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -999,7 +999,7 @@ impl Clean for ty::Method { }; let s = match s { ast::SelfRegion(..) => { - match ty::get(*self.fty.sig.inputs.get(0)).sty { + match ty::get(self.fty.sig.inputs[0]).sty { ty::ty_rptr(r, mt) => { SelfBorrowed(r.clean(), mt.mutbl.clean()) } diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index c549469dcdeaa..f64a75c559e9b 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -210,7 +210,7 @@ fn path(w: &mut fmt::Formatter, path: &clean::Path, print_all: bool, let loc = current_location_key.get().unwrap(); let cache = cache_key.get().unwrap(); let abs_root = root(&**cache, loc.as_slice()); - let rel_root = match path.segments.get(0).name.as_slice() { + let rel_root = match path.segments[0].name.as_slice() { "self" => Some("./".to_string()), _ => None, }; diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 244fada5b9ada..eed058878e082 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -551,7 +551,7 @@ fn write_shared(cx: &Context, } mydst.push(format!("{}.{}.js", remote_item_type.to_static_str(), - *remote_path.get(remote_path.len() - 1))); + remote_path[remote_path.len() - 1])); let all_implementors = try!(collect(&mydst, krate.name.as_slice(), "implementors")); diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 2cbac090835ed..245dc9a0a34e5 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -167,7 +167,7 @@ pub fn main_args(args: &[String]) -> int { println!("only one input file may be specified"); return 1; } - let input = matches.free.get(0).as_slice(); + let input = matches.free[0].as_slice(); let libs = matches.opt_strs("L").iter().map(|s| Path::new(s.as_slice())).collect(); diff --git a/src/librustdoc/markdown.rs b/src/librustdoc/markdown.rs index da271be4768e3..f9bc59888ae3b 100644 --- a/src/librustdoc/markdown.rs +++ b/src/librustdoc/markdown.rs @@ -75,7 +75,7 @@ pub fn render(input: &str, mut output: Path, matches: &getopts::Matches, "invalid markdown file: expecting initial line with `% ...TITLE...`"); return 5; } - let title = metadata.get(0).as_slice(); + let title = metadata[0].as_slice(); reset_headers(); diff --git a/src/librustdoc/passes.rs b/src/librustdoc/passes.rs index 5145a4f254eea..cc5bc5cb7c170 100644 --- a/src/librustdoc/passes.rs +++ b/src/librustdoc/passes.rs @@ -339,7 +339,7 @@ pub fn unindent(s: &str) -> String { }); if lines.len() >= 1 { - let mut unindented = vec![ lines.get(0).trim().to_string() ]; + let mut unindented = vec![ lines[0].trim().to_string() ]; unindented.push_all(lines.tail().iter().map(|&line| { if line.is_whitespace() { line.to_string() diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index f7301abef51f2..eedc39eb2dc1f 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -1015,7 +1015,7 @@ impl Stack { /// lower indices are at the bottom of the stack while higher indices are /// at the top. pub fn get<'l>(&'l self, idx: uint) -> StackElement<'l> { - match *self.stack.get(idx) { + match self.stack[idx] { InternalIndex(i) => { Index(i) } InternalKey(start, size) => { Key(str::from_utf8( diff --git a/src/libsync/mpmc_bounded_queue.rs b/src/libsync/mpmc_bounded_queue.rs index b700d57bc033d..7343838f19e61 100644 --- a/src/libsync/mpmc_bounded_queue.rs +++ b/src/libsync/mpmc_bounded_queue.rs @@ -90,7 +90,7 @@ impl State { let mask = self.mask; let mut pos = self.enqueue_pos.load(Relaxed); loop { - let node = self.buffer.get(pos & mask); + let node = &self.buffer[pos & mask]; let seq = unsafe { (*node.get()).sequence.load(Acquire) }; let diff: int = seq as int - pos as int; @@ -118,7 +118,7 @@ impl State { let mask = self.mask; let mut pos = self.dequeue_pos.load(Relaxed); loop { - let node = self.buffer.get(pos & mask); + let node = &self.buffer[pos & mask]; let seq = unsafe { (*node.get()).sequence.load(Acquire) }; let diff: int = seq as int - (pos + 1) as int; if diff == 0 { diff --git a/src/libsync/raw.rs b/src/libsync/raw.rs index 26cc0b2c6a23c..d056566bb9a97 100644 --- a/src/libsync/raw.rs +++ b/src/libsync/raw.rs @@ -243,7 +243,7 @@ impl<'a> Condvar<'a> { } // Create waiter nobe, and enqueue ourself to // be woken up by a signaller. - wait_end = Some(state.blocked.get(condvar_id).wait_end()); + wait_end = Some(state.blocked[condvar_id].wait_end()); } else { out_of_bounds = Some(state.blocked.len()); } @@ -281,7 +281,7 @@ impl<'a> Condvar<'a> { let mut result = false; self.sem.with(|state| { if condvar_id < state.blocked.len() { - result = state.blocked.get(condvar_id).signal(); + result = state.blocked[condvar_id].signal(); } else { out_of_bounds = Some(state.blocked.len()); } diff --git a/src/libterm/terminfo/parm.rs b/src/libterm/terminfo/parm.rs index 139f1113aaf94..db76e78d1617c 100644 --- a/src/libterm/terminfo/parm.rs +++ b/src/libterm/terminfo/parm.rs @@ -512,13 +512,13 @@ fn format(val: Param, op: FormatOp, flags: Flags) -> Result ,String> { assert!(!s.is_empty(), "string conversion produced empty result"); match op { FormatDigit => { - if flags.space && !(*s.get(0) == '-' as u8 || - *s.get(0) == '+' as u8) { + if flags.space && !(s[0] == '-' as u8 || + s[0] == '+' as u8) { s.unshift(' ' as u8); } } FormatOctal => { - if flags.alternate && *s.get(0) != '0' as u8 { + if flags.alternate && s[0] != '0' as u8 { s.unshift('0' as u8); } } diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index a857bc7535d9c..15c5fa6b75a5a 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -373,7 +373,7 @@ pub fn parse_opts(args: &[String]) -> Option { if matches.opt_present("h") { usage(args[0].as_slice()); return None; } let filter = if matches.free.len() > 0 { - let s = matches.free.get(0).as_slice(); + let s = matches.free[0].as_slice(); match Regex::new(s) { Ok(re) => Some(re), Err(e) => return Some(Err(format!("could not parse /{}/: {}", s, e))) diff --git a/src/libtest/stats.rs b/src/libtest/stats.rs index 5169652116532..d8f628e2196f5 100644 --- a/src/libtest/stats.rs +++ b/src/libtest/stats.rs @@ -175,7 +175,7 @@ impl<'a,T: FloatMath + FromPrimitive> Stats for &'a [T] { // This inner loop applies `hi`/`lo` summation to each // partial so that the list of partial sums remains exact. for i in range(0, partials.len()) { - let mut y = *partials.get(i); + let mut y = partials[i]; if num::abs(x) < num::abs(y) { mem::swap(&mut x, &mut y); } diff --git a/src/libuuid/lib.rs b/src/libuuid/lib.rs index 233743175b503..aa13ae82e76d9 100644 --- a/src/libuuid/lib.rs +++ b/src/libuuid/lib.rs @@ -398,8 +398,8 @@ impl Uuid { match group_lens.len() { // Single group, no hyphens 1 => { - if *group_lens.get(0) != 32 { - return Err(ErrorInvalidLength(*group_lens.get(0))); + if group_lens[0] != 32 { + return Err(ErrorInvalidLength(group_lens[0])); } }, // Five groups, hyphens in between each