Avoid needless creation of unique strings in fmt!()
Only the first portion has to be owned, as it acts as the buffer for the constructed string. The remaining strings can be static.
This commit is contained in:
parent
2ae44a07a9
commit
2e3e0c0892
|
@ -273,15 +273,13 @@ fn pieces_to_expr(cx: @ext_ctxt, sp: span,
|
|||
match pc {
|
||||
/* Raw strings get appended via str::push_str */
|
||||
PieceString(s) => {
|
||||
let portion = mk_uniq_str(cx, fmt_sp, s);
|
||||
|
||||
/* If this is the first portion, then initialize the local
|
||||
buffer with it directly. If it's actually the only piece,
|
||||
then there's no need for it to be mutable */
|
||||
if i == 0 {
|
||||
stms.push(mk_local(cx, fmt_sp, npieces > 1, ident, portion));
|
||||
stms.push(mk_local(cx, fmt_sp, npieces > 1, ident, mk_uniq_str(cx, fmt_sp, s)));
|
||||
} else {
|
||||
let args = ~[mk_mut_addr_of(cx, fmt_sp, buf()), portion];
|
||||
let args = ~[mk_mut_addr_of(cx, fmt_sp, buf()), mk_base_str(cx, fmt_sp, s)];
|
||||
let call = mk_call_global(cx,
|
||||
fmt_sp,
|
||||
~[str_ident, push_ident],
|
||||
|
|
Loading…
Reference in New Issue