collections: Enable IndexMut for some collections
This commit enables implementations of IndexMut for a number of collections, including Vec, RingBuf, SmallIntMap, TrieMap, TreeMap, and HashMap. At the same time this deprecates the `get_mut` methods on vectors in favor of using the indexing notation. cc #18424
This commit is contained in:
parent
18a3db6aa1
commit
1d356624a1
46 changed files with 165 additions and 271 deletions
|
|
@ -785,6 +785,6 @@ impl SyntaxEnv {
|
|||
|
||||
pub fn info<'a>(&'a mut self) -> &'a mut BlockInfo {
|
||||
let last_chain_index = self.chain.len() - 1;
|
||||
&mut self.chain.get_mut(last_chain_index).info
|
||||
&mut self.chain[last_chain_index].info
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ impl<'a, 'b> Context<'a, 'b> {
|
|||
self.verify_same(self.args[arg].span, &ty, arg_type);
|
||||
}
|
||||
if self.arg_types[arg].is_none() {
|
||||
*self.arg_types.get_mut(arg) = Some(ty);
|
||||
self.arg_types[arg] = Some(ty);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -567,7 +567,7 @@ impl<'a, 'b> Context<'a, 'b> {
|
|||
let lname = self.ecx.ident_of(format!("__arg{}",
|
||||
*name).as_slice());
|
||||
pats.push(self.ecx.pat_ident(e.span, lname));
|
||||
*names.get_mut(self.name_positions[*name]) =
|
||||
names[self.name_positions[*name]] =
|
||||
Some(Context::format_arg(self.ecx, e.span, arg_ty,
|
||||
self.ecx.expr_ident(e.span, lname)));
|
||||
heads.push(self.ecx.expr_addr_of(e.span, e));
|
||||
|
|
|
|||
|
|
@ -288,8 +288,7 @@ pub fn parse(sess: &ParseSess,
|
|||
// Only touch the binders we have actually bound
|
||||
for idx in range(ei.match_lo, ei.match_hi) {
|
||||
let sub = (ei.matches[idx]).clone();
|
||||
new_pos.matches
|
||||
.get_mut(idx)
|
||||
new_pos.matches[idx]
|
||||
.push(Rc::new(MatchedSeq(sub, mk_sp(ei.sp_lo,
|
||||
sp.hi))));
|
||||
}
|
||||
|
|
@ -331,8 +330,7 @@ pub fn parse(sess: &ParseSess,
|
|||
new_ei.idx += 1u;
|
||||
//we specifically matched zero repeats.
|
||||
for idx in range(match_idx_lo, match_idx_hi) {
|
||||
new_ei.matches
|
||||
.get_mut(idx)
|
||||
new_ei.matches[idx]
|
||||
.push(Rc::new(MatchedSeq(Vec::new(), sp)));
|
||||
}
|
||||
|
||||
|
|
@ -376,7 +374,7 @@ pub fn parse(sess: &ParseSess,
|
|||
if token_name_eq(&tok, &token::Eof) {
|
||||
if eof_eis.len() == 1u {
|
||||
let mut v = Vec::new();
|
||||
for dv in eof_eis.get_mut(0).matches.iter_mut() {
|
||||
for dv in eof_eis[0].matches.iter_mut() {
|
||||
v.push(dv.pop().unwrap());
|
||||
}
|
||||
return Success(nameize(sess, ms, v.as_slice()));
|
||||
|
|
@ -417,7 +415,7 @@ pub fn parse(sess: &ParseSess,
|
|||
match ei.elts[ei.idx].node {
|
||||
MatchNonterminal(_, name, idx) => {
|
||||
let name_string = token::get_ident(name);
|
||||
ei.matches.get_mut(idx).push(Rc::new(MatchedNonterminal(
|
||||
ei.matches[idx].push(Rc::new(MatchedNonterminal(
|
||||
parse_nt(&mut rust_parser, name_string.get()))));
|
||||
ei.idx += 1u;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue