vec!(cx.stmt_expr(e_push))
},
ast::TTDelimited(sp, ref open, ref tts, ref close) => {
- let mut stmts = vec![];
- stmts.extend(mk_tt(cx, sp, &open.to_tt()).into_iter());
- stmts.extend(tts.iter().flat_map(|tt| mk_tt(cx, sp, tt).into_iter()));
- stmts.extend(mk_tt(cx, sp, &close.to_tt()).into_iter());
- stmts
+ mk_tt(cx, sp, &open.to_tt()).into_iter()
+ .chain(tts.iter().flat_map(|tt| mk_tt(cx, sp, tt).into_iter()))
+ .chain(mk_tt(cx, sp, &close.to_tt()).into_iter())
+ .collect()
},
ast::TTSequence(..) => fail!("TTSequence in quote!"),
ast::TTNonterminal(sp, ident) => {
(*frame.forest)[frame.idx].clone()
};
match t {
- TTDelimited(_, open, delimed_tts, close) => {
- let mut tts = vec![];
- tts.push(open.to_tt());
- tts.extend(delimed_tts.iter().map(|x| (*x).clone()));
- tts.push(close.to_tt());
+ TTDelimited(_, open, tts, close) => {
+ let mut forest = Vec::with_capacity(1 + tts.len() + 1);
+ forest.push(open.to_tt());
+ forest.extend(tts.iter().map(|x| (*x).clone()));
+ forest.push(close.to_tt());
r.stack.push(TtFrame {
- forest: Rc::new(tts),
+ forest: Rc::new(forest),
idx: 0,
dotdotdoted: false,
sep: None