Crate mona[−][src]
Expand description
Transform nested container types in Rust.
The crate provides the .transpose()
and .flatten()
on nested container types.
.transpose()
exchanges the inner and outer containers types. For example,
Vec<Vec<T>>
->Option<Vec<Vec<T>>>
Vec<HashMap<K, V>>
->Option<HashMap<K, Vec<V>>>
HashMap<K, Vec<V>>
->HashMap<K, Vec<V>>
Result<Result<T, E>, F>
->Result<Result<T, F>, E>
Option<Option<T>>
->Option<Option<T>>
.flatten()
merges the inner and outer container types. For example,
Vec<Vec<T>>
->Vec<T>
HashMap<K, HashMap<L, V>>
->HashMap<(K, L), V>
HashMap<K, Vec<V>>
->HashMap<(K, usize), V>
Vec<HashMap<K, V>>
->HashMap<(usize, K), V>
This is an example usage of .transpose
and .flatten()
.
use mona::prelude::*; let vec_of_vec = vec![vec![1, 2, 3], vec![4, 5, 6]]; assert_eq!( vec_of_vec.clone().transpose(), Some(vec![vec![1, 4], vec![2, 5], vec![3, 6]]) ); assert_eq!(vec_of_vec.flatten(), vec![1, 2, 3, 4, 5, 6]);
Modules
prelude |
Traits
Flatten | The operation that flattens nested container types. |
Transpose | Transposition of nested container types. |