Vec<Vec<T>>.get 的好版本吗?

Geo*_*lin 1 rust

有什么舒适的方式来获取价值Vec<Vec<T>>吗?Vec我可以对普通的一维:执行此操作vec.get(),但如果vecVec<Vec>,则 get 返回Some<Vec<T>>,而不是 的值T。有没有一种从二维矩阵()中“获取”值的好方法Vec<Vec<T>>

Apl*_*123 5

Option::and_then让您链接可选返回值(o.and_then(f)相当于o.map(f).flatten()):

vec.get(i).and_then(|v| v.get(j))
Run Code Online (Sandbox Code Playgroud)

它还可以轻松扩展到更高的维度:

vec
    .get(i)
    .and_then(|v| v.get(j))
    .and_then(|v| v.get(k))
    .and_then(|v| v.get(l))
    // and so on
Run Code Online (Sandbox Code Playgroud)