Skip to content

Commit 2e4ef0b

Browse files
committed
---
yaml --- r: 49534 b: refs/heads/master c: 29e8b6e h: refs/heads/master v: v3
1 parent 2a9bb6d commit 2e4ef0b

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 12df65470fb8c5d57fb4f94d37557daa6282173f
2+
refs/heads/master: 29e8b6ea9b63c5cc1cd91cc5eb756820f7fe50b7
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: f7a2371c176663d59062ec5158f39faecba45768
55
refs/heads/try: 2a8fb58d79e685d5ca07b039badcf2ae3ef077ea

trunk/src/libcore/str.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,22 +1020,21 @@ pub fn each_chari(s: &str, it: &fn(uint, char) -> bool) {
10201020
/// Iterates over the chars in a string in reverse
10211021
#[inline(always)]
10221022
pub fn each_char_reverse(s: &str, it: &fn(char) -> bool) {
1023-
let mut pos = 0;
1024-
let len = s.char_len();
1025-
while pos > 0 {
1026-
let CharRange {ch, next} = char_range_at_reverse(s, pos);
1027-
pos = next;
1028-
if !it(ch) { break; }
1029-
}
1023+
each_chari_reverse(s, |_, c| it(c))
10301024
}
10311025

10321026
// Iterates over the chars in a string in reverse, with indices
10331027
#[inline(always)]
10341028
pub fn each_chari_reverse(s: &str, it: &fn(uint, char) -> bool) {
1029+
let mut pos = s.len();
10351030
let mut ch_pos = s.char_len();
1036-
for s.each_char_reverse |ch| {
1031+
while pos > 0 {
1032+
let CharRange {ch, next} = char_range_at_reverse(s, pos);
1033+
pos = next;
10371034
ch_pos -= 1;
1035+
10381036
if !it(ch_pos, ch) { break; }
1037+
10391038
}
10401039
}
10411040

@@ -3661,10 +3660,10 @@ mod tests {
36613660
fn test_each_char_reverse() {
36623661
let s = ~"ศไทย中华Việt Nam";
36633662
let v = ~['ศ','ไ','ท','ย','中','华','V','i','ệ','t',' ','N','a','m'];
3664-
let mut pos = 0;
3663+
let mut pos = v.len();
36653664
for s.each_char_reverse |ch| {
3665+
pos -= 1;
36663666
fail_unless!(ch == v[pos]);
3667-
pos += 1;
36683667
}
36693668
}
36703669

0 commit comments

Comments
 (0)