1 个不稳定版本

0.1.0 2021年5月30日

#2149 in 算法

MIT 许可证

11KB
253

mona:在 Rust 中转换嵌套容器类型

用法

该包提供了对嵌套容器类型的 .transpose().flatten() 操作。

.transpose() 交换内部和外部容器的类型。例如,

  • 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() 合并内层和外层容器类型。例如,

  • 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>

这是 .transpose.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]);

许可证

MIT 许可证。请参阅 LICENSE.txt

依赖项

~425KB