Skip to content

Commit 524b0c9

Browse files
committed
Add test for inplace collection of Result<Vec<_>,_>
1 parent af424c1 commit 524b0c9

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

library/core/tests/iter/mod.rs

+26
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,29 @@ pub fn extend_for_unit() {
100100
}
101101
assert_eq!(x, 5);
102102
}
103+
104+
#[test]
105+
pub fn inplace_result_collect() {
106+
let src = vec![0usize; 256];
107+
let srcptr = src.as_ptr();
108+
let sink = src.into_iter().map(|i| Ok(i)).collect::<Result<Vec<_>, ()>>().unwrap();
109+
let sinkptr = sink.as_ptr();
110+
assert_eq!(srcptr, sinkptr);
111+
112+
let src: Vec<usize> = vec![0usize; 256];
113+
let srcptr = src.as_ptr();
114+
let iter = src
115+
.into_iter()
116+
.enumerate()
117+
.map(|i| i.0 + i.1)
118+
.zip(std::iter::repeat(1usize))
119+
.map(|(a, b)| a + b)
120+
.map_while(Option::Some)
121+
.peekable()
122+
.skip(1)
123+
.map(|e| std::num::NonZeroUsize::new(e))
124+
.map(|z| z.map(|u| u.get()).ok_or(()));
125+
let sink = iter.collect::<Result<Vec<_>, _>>().unwrap();
126+
let sinkptr = sink.as_ptr();
127+
assert_eq!(srcptr, sinkptr as *const usize);
128+
}

0 commit comments

Comments
 (0)