Skip to content

Commit 3d64200

Browse files
committed
Fix skipped items in extend/from_iter/collect.
Fixes #365.
1 parent 21422eb commit 3d64200

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1520,6 +1520,7 @@ impl<T, const N: usize> SmallVec<T, N> {
15201520
// At this point we either consumed all capacity or the iterator is exhausted (fused)
15211521
if let Some(item) = iter.next() {
15221522
self.push(item);
1523+
len += 1;
15231524
} else {
15241525
return;
15251526
}

src/tests.rs

+9
Original file line numberDiff line numberDiff line change
@@ -1151,6 +1151,15 @@ fn collect_from_iter() {
11511151
let _y: SmallVec<u8, 1> = SmallVec::from_iter(iter);
11521152
}
11531153

1154+
#[test]
1155+
fn test_collect_with_spill() {
1156+
let input = "0123456";
1157+
let collected: SmallVec<char, 4> = input
1158+
.chars()
1159+
.collect();
1160+
assert_eq!(collected, &['0', '1', '2', '3', '4', '5', '6']);
1161+
}
1162+
11541163
#[test]
11551164
fn test_spare_capacity_mut() {
11561165
let mut v: SmallVec<u8, 2> = SmallVec::new();

0 commit comments

Comments
 (0)