#tuple #transpose #result #options

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

#6 in #transpose

Download history 1/week @ 2024-11-14 10/week @ 2024-11-21 8/week @ 2024-11-28 18/week @ 2024-12-05 21/week @ 2024-12-12 2/week @ 2024-12-19 10/week @ 2025-01-02 30/week @ 2025-01-09 35/week @ 2025-01-16 31/week @ 2025-01-23 24/week @ 2025-01-30 49/week @ 2025-02-06 35/week @ 2025-02-13 39/week @ 2025-02-20 61/week @ 2025-02-27

189 downloads per month
Used in memora

MIT license

6KB
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