Skip to content

Commit 5b99436

Browse files
bors[bot]cuviper
andcommitted
560: Parity with std::str iterators r=nikomatsakis a=cuviper This mimics the rest of the iterators in `std::str` with methods on the `ParallelString` trait. Closes rayon-rs#559, as `par_char_indices` is the closest we can do for that. Co-authored-by: Josh Stone <[email protected]>
2 parents 5f98c01 + d466fd0 commit 5b99436

File tree

3 files changed

+505
-90
lines changed

3 files changed

+505
-90
lines changed

src/iter/test.rs

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -50,78 +50,6 @@ pub fn execute_unindexed_range() {
5050
assert_eq!(b, c);
5151
}
5252

53-
#[test]
54-
pub fn execute_strings() {
55-
let mut rng = XorShiftRng::from_seed([14159, 26535, 89793, 23846]);
56-
let s: String = rng.gen_iter::<char>().take(1024).collect();
57-
58-
let par_chars: String = s.par_chars().collect();
59-
assert_eq!(s, par_chars);
60-
61-
let par_even: String = s.par_chars().filter(|&c| (c as u32) & 1 == 0).collect();
62-
let ser_even: String = s.chars().filter(|&c| (c as u32) & 1 == 0).collect();
63-
assert_eq!(par_even, ser_even);
64-
65-
// test `FromParallelIterator<&char> for String`
66-
let vchars: Vec<char> = s.par_chars().collect();
67-
let par_chars: String = vchars.par_iter().collect();
68-
assert_eq!(s, par_chars);
69-
}
70-
71-
#[test]
72-
pub fn execute_strings_split() {
73-
// char testcases from examples in `str::split` etc.,
74-
// plus a large self-test for good measure.
75-
let tests = vec![("Mary had a little lamb", ' '),
76-
("", 'X'),
77-
("lionXXtigerXleopard", 'X'),
78-
("||||a||b|c", '|'),
79-
("(///)", '/'),
80-
("010", '0'),
81-
(" a b c", ' '),
82-
("A.B.", '.'),
83-
("A..B..", '.'),
84-
("foo\r\nbar\n\nbaz\n", '\n'),
85-
("foo\nbar\n\r\nbaz", '\n'),
86-
("A few words", ' '),
87-
(" Mary had\ta\u{2009}little \n\t lamb", ' '),
88-
(include_str!("test.rs"), ' ')];
89-
90-
for &(string, separator) in &tests {
91-
let serial: Vec<_> = string.split(separator).collect();
92-
let parallel: Vec<_> = string.par_split(separator).collect();
93-
assert_eq!(serial, parallel);
94-
95-
let serial_fn: Vec<_> = string.split(|c| c == separator).collect();
96-
let parallel_fn: Vec<_> = string.par_split(|c| c == separator).collect();
97-
assert_eq!(serial_fn, parallel_fn);
98-
}
99-
100-
for &(string, separator) in &tests {
101-
let serial: Vec<_> = string.split_terminator(separator).collect();
102-
let parallel: Vec<_> = string.par_split_terminator(separator).collect();
103-
assert_eq!(serial, parallel);
104-
}
105-
106-
for &(string, separator) in &tests {
107-
let serial: Vec<_> = string.split_terminator(|c| c == separator).collect();
108-
let parallel: Vec<_> = string.par_split_terminator(|c| c == separator).collect();
109-
assert_eq!(serial, parallel);
110-
}
111-
112-
for &(string, _) in &tests {
113-
let serial: Vec<_> = string.lines().collect();
114-
let parallel: Vec<_> = string.par_lines().collect();
115-
assert_eq!(serial, parallel);
116-
}
117-
118-
for &(string, _) in &tests {
119-
let serial: Vec<_> = string.split_whitespace().collect();
120-
let parallel: Vec<_> = string.par_split_whitespace().collect();
121-
assert_eq!(serial, parallel);
122-
}
123-
}
124-
12553
#[test]
12654
pub fn check_map_indexed() {
12755
let a = [1, 2, 3];

0 commit comments

Comments
 (0)