Skip to content

Commit 405b244

Browse files
committed
Remove the CollectFolder::complete() assertion
We can defer that to the global assertion in `Collect::complete()`, which is where the safety is important to `Vec::set_len`.
1 parent ed518c7 commit 405b244

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/iter/collect/consumer.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ impl<'c, T: Send + 'c> Folder<T> for CollectFolder<'c, T> {
8585
}
8686

8787
fn complete(self) {
88-
assert!(self.target.len() == 0, "too few values pushed to consumer");
88+
// NB: We don't explicitly check that the local writes were complete,
89+
// but `Collect::complete()` will assert the global write count.
8990

9091
// track total values written
9192
self.global_writes

src/iter/collect/test.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,18 @@ fn produce_too_many_items() {
2525
/// Produces fewer items than promised. Does not do any
2626
/// splits at all.
2727
#[test]
28-
#[should_panic(expected = "too few values")]
28+
#[should_panic(expected = "expected 5 total writes, but got 2")]
2929
fn produce_fewer_items() {
3030
let mut v = vec![];
3131
let mut collect = Collect::new(&mut v, 5);
32-
let consumer = collect.as_consumer();
33-
let mut folder = consumer.into_folder();
34-
folder = folder.consume(22);
35-
folder = folder.consume(23);
36-
folder.complete();
32+
{
33+
let consumer = collect.as_consumer();
34+
let mut folder = consumer.into_folder();
35+
folder = folder.consume(22);
36+
folder = folder.consume(23);
37+
folder.complete();
38+
}
39+
collect.complete();
3740
}
3841

3942
// Complete is not called by the consumer.Hence,the collection vector is not fully initialized.
@@ -129,7 +132,7 @@ fn right_produces_too_many_items() {
129132
// The left consumer produces fewer items while the right
130133
// consumer produces correct number.
131134
#[test]
132-
#[should_panic(expected = "too few values")]
135+
#[should_panic(expected = "expected 4 total writes, but got 3")]
133136
fn left_produces_fewer_items() {
134137
let mut v = vec![];
135138
let mut collect = Collect::new(&mut v, 4);
@@ -149,7 +152,7 @@ fn left_produces_fewer_items() {
149152
// The right consumer produces fewer items while the left
150153
// consumer produces correct number.
151154
#[test]
152-
#[should_panic(expected = "too few values")]
155+
#[should_panic(expected = "expected 4 total writes, but got 3")]
153156
fn right_produces_fewer_items() {
154157
let mut v = vec![];
155158
let mut collect = Collect::new(&mut v, 4);

0 commit comments

Comments
 (0)