Implement unary array.zip, closing #2478 (#2491)

This commit is contained in:
Joseph Wilson 2023-10-27 23:58:55 +13:00 committed by GitHub
parent 1603e2df26
commit e182777133
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -473,9 +473,18 @@ impl Array {
#[variadic]
others: Vec<Array>,
) -> SourceResult<Array> {
// Fast path for just two arrays.
let mut args = args;
if args.remaining() <= 1 {
// Fast path for one array.
if args.remaining() == 0 {
return Ok(self
.iter()
.map(|item| array![item.clone()].into_value())
.collect());
}
// Fast path for just two arrays.
if args.remaining() == 1 {
let other = args.expect::<Array>("others")?;
args.finish()?;
return Ok(self

View File

@ -260,6 +260,9 @@
#test((1, 2, 3).zip((3, 4, 5), (6, 7, 8)), ((1, 3, 6), (2, 4, 7), (3, 5, 8)))
#test(().zip((), ()), ())
#test((1,).zip((2,), (3,)), ((1, 2, 3),))
#test((1, 2, 3).zip(), ((1,), (2,), (3,)))
#test(array.zip(()), ())
#test(array.zip(("a", "b")), (("a",), ("b",)))
---
// Test the `enumerate` method.