libstd: Implement StrBuf, a new string buffer type like Vec, and

port all code over to use it.
This commit is contained in:
Patrick Walton
2014-04-02 16:54:22 -07:00
committed by Huon Wilson
parent 7fbcb400f0
commit d8e45ea7c0
66 changed files with 990 additions and 931 deletions

View File

@@ -62,6 +62,7 @@
*/
use std::io;
use std::strbuf::StrBuf;
#[deriving(Clone, Eq)]
pub enum Breaks {
@@ -118,13 +119,17 @@ pub fn tok_str(t: Token) -> ~str {
}
}
pub fn buf_str(toks: Vec<Token> , szs: Vec<int> , left: uint, right: uint,
lim: uint) -> ~str {
pub fn buf_str(toks: Vec<Token>,
szs: Vec<int>,
left: uint,
right: uint,
lim: uint)
-> ~str {
let n = toks.len();
assert_eq!(n, szs.len());
let mut i = left;
let mut l = lim;
let mut s = ~"[";
let mut s = StrBuf::from_str("[");
while i != right && l != 0u {
l -= 1u;
if i != left {
@@ -135,7 +140,7 @@ pub fn buf_str(toks: Vec<Token> , szs: Vec<int> , left: uint, right: uint,
i %= n;
}
s.push_char(']');
return s;
return s.into_owned();
}
pub enum PrintStackBreak {