有没有一种规范的方法可以转换Option<Result<T>>为Result<Option<T>>?
fn optres_to_resopt<T>(optres: Option<Result<T>>) -> Result<Option<T>> {
    if let Some(res) = optres {
        match res {
            Ok(v) => Ok(Some(v)),
            Err(e) => Err(e),
        }
    } else {
        Ok(None)
    }
}
fn optres_to_resopt<T>(optres: Option<Result<T>>) -> Result<Option<T>> {
    optres.transpose()
}
顺便说一句,实现基本上是你的功能:
pub fn transpose(self) -> Result<Option<T>, E> {
    match self {
        Some(Ok(x)) => Ok(Some(x)),
        Some(Err(e)) => Err(e),
        None => Ok(None),
    }
}
| 归档时间: | 
 | 
| 查看次数: | 172 次 | 
| 最近记录: |