Skip to content

Commit 1fbaf10

Browse files
committed
Fix extend from assuming a fused iterator.
1 parent f96322b commit 1fbaf10

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

lib.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -1356,7 +1356,7 @@ impl<A: Array> Extend<A::Item> for SmallVec<A> {
13561356
ptr::write(ptr.offset(len.get() as isize), out);
13571357
len.increment_len(1);
13581358
} else {
1359-
break;
1359+
return;
13601360
}
13611361
}
13621362
}
@@ -2329,4 +2329,16 @@ mod tests {
23292329
v.push(4);
23302330
assert_eq!(v[..], [4]);
23312331
}
2332+
2333+
#[test]
2334+
fn resumable_extend() {
2335+
let s = "a b c";
2336+
// This iterator yields: (Some('a'), None, Some('b'), None, Some('c')), None
2337+
let it = s
2338+
.chars()
2339+
.scan(0, |_, ch| if ch.is_whitespace() { None } else { Some(ch) });
2340+
let mut v: SmallVec<[char; 4]> = SmallVec::new();
2341+
v.extend(it);
2342+
assert_eq!(v[..], ['a']);
2343+
}
23322344
}

0 commit comments

Comments
 (0)