#tuple #result #option #transpose

no-std tuple-transpose

Transpose tuple of results and options to result and option of tuple

1 unstable release

0.1.0 Nov 2, 2019

#28 in #tuple

Download history 36/week @ 2022-12-06 29/week @ 2022-12-13 53/week @ 2022-12-20 65/week @ 2022-12-27 75/week @ 2023-01-03 75/week @ 2023-01-10 47/week @ 2023-01-17 62/week @ 2023-01-24 78/week @ 2023-01-31 109/week @ 2023-02-07 120/week @ 2023-02-14 111/week @ 2023-02-21 155/week @ 2023-02-28 98/week @ 2023-03-07 97/week @ 2023-03-14 109/week @ 2023-03-21

475 downloads per month
Used in memora

MIT license

5KB
95 lines

tuple-transpose

Transpose a tuple of results or options to result or option of tuple.

Examples

// Result
assert_eq!((Ok::<_, ()>(1u32), Ok(2.0f32)).transpose(), Ok((1u32, 2.0f32)));
assert_eq!((Ok(1u32), Err::<u64, _>(2.0f32)).transpose(), Err(2.0f32));
assert_eq!((Err::<i32, _>(1u32), Ok(2.0f32)).transpose(), Err(1u32));

// Option
assert_eq!((Some(1u32), Some(2.0f32)).transpose(), Some((1u32, 2.0f32)));
assert_eq!((Some(1u32), None::<f32>).transpose(), None::<(u32, f32)>);
assert_eq!((None::<u32>, Some(2.0f32)).transpose(), None::<(u32, f32)>);

No runtime deps