tuple-transpose

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

Examples

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

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