#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

#2961 in Rust patterns

Download history 224/week @ 2024-01-27 309/week @ 2024-02-03 272/week @ 2024-02-10 278/week @ 2024-02-17 498/week @ 2024-02-24 391/week @ 2024-03-02 348/week @ 2024-03-09 457/week @ 2024-03-16 446/week @ 2024-03-23 524/week @ 2024-03-30 513/week @ 2024-04-06 542/week @ 2024-04-13 422/week @ 2024-04-20 196/week @ 2024-04-27 264/week @ 2024-05-04 342/week @ 2024-05-11

1,314 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