- 23 3月, 2013 17 次提交
-
-
由 bors 提交于
r? @graydon
-
由 bors 提交于
-
由 Tim Chevalier 提交于
-
由 bors 提交于
-
由 bors 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Luqman Aden 提交于
-
由 Tim Chevalier 提交于
-
由 bors 提交于
r? @nikomatsakis
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 Patrick Walton 提交于
-
由 bors 提交于
This is a minor step towards #3571, although I'm sure there's still more work to be done. Previously, `fmt!` collected a bunch of strings in a vector and then called `str::concat`. This changes the behavior by maintaining only one buffer and appending directly into that buffer. This avoids doubly-allocating memory, and it has the added bonus of reducing some allocations in `core::unstable::extfmt` One of the unfortunate side effects of this is that the `rt` module in `extfmt.rs` had to be duplicated to avoid `stage0` errors. Dealing with the change in conversion functions may require a bit of a dance when a snapshot happens, but I think it's doable. If the second speedup commit isn't deemed necessary, I got about a 15% speedup with just the first patch which doesn't require any modification of `extfmt.rs`, so no snapshot weirdness. Here's some other things I ran into when looking at `fmt!`: * I don't think that #2249 is relevant any more except for maybe removing one of `%i` or `%d` * I'm not sure what was in mind for using traits with #3571, but I thought that formatters like `%u` could invoke the `to_uint()` method on the `NumCast` trait, but I ran into some problems like those in #5462 I'm having trouble thinking of other wins for `fmt!`, but if there's some suggestions I'd be more than willing to look into if they'd work out or not.
-
由 bors 提交于
The `each_line` function in `ReaderUtil` acts very differently to equivalent functions in Python, Ruby, Clojure etc. E.g. given a file `t` with contents `trailing\nnew line\n` and `n` containing `no trailing\nnew line`: Rust: ```Rust t: ~[~"trailing", ~"new line", ~""] n: ~[~"no trailing", ~"new line"] ``` Python: ```Python >>> open('t').readlines() ['trailing\n', 'new line\n'] >>> open('n').readlines() ['no trailing\n', 'new line'] ``` Ruby: ```Ruby irb(main):001:0> File.readlines('t') => ["trailing\n", "new line\n"] irb(main):002:0> File.readlines('n') => ["no trailing\n", "new line"] ``` Clojure ```Clojure user=> (read-lines "t") ("trailing" "new line") user=> (read-lines "n") ("no trailing" "new line") ``` The extra string that rust includes at the end is inconsistent, and means that it is impossible to distinguish between the "real" empty line a file that ends `...\n\n`, and the "fake" one after the last `\n`. The code attached makes Rust's `each_line` act like Clojure (and PHP, i.e. not including the `\n`), as well as adjusting `str::lines` to fix the trailing empty line problem. Also, add a convenience `read_lines` method to read all the lines in a file into a vector.
-
- 22 3月, 2013 23 次提交
-
-
由 Alex Crichton 提交于
Achieves a little more speedup and avoids allocations around some strings in conv_str
-
由 Alex Crichton 提交于
-
由 Alex Crichton 提交于
-
由 bors 提交于
I made a typo in `str::levdistance` in my str pull request. This fixes it.
-
由 Huon Wilson 提交于
-
由 Huon Wilson 提交于
Specifically, `lines` and `each_line` will not emit a trailing empty string when given "...\n". Also, add `read_lines`, which just collects all of `each_line` into a vector, and `split_*_no_trailing` which will is the generalised version of `lines`.
-
由 bors 提交于
Closes #5411.
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 Andrew Paseltiner 提交于
-
由 bors 提交于
-
由 bors 提交于
Closes #4468
-
由 bors 提交于
-
由 Erick Tryzelaar 提交于
-
由 bors 提交于
r? @catamorphism
-
由 bors 提交于
This makes the `trim` and `substr` functions return a slice instead of an `~str`, and removes the unnecessary `Trimmable` trait (`StrSlice` already contains the same functionality). Also moves the `ToStr` implementations for the three str types into the str module in anticipation of further untangling.
-
由 Patrick Walton 提交于
-