打开主菜单
首页
随机
登录
设置
关于wrc's Wiki
免责声明
wrc's Wiki
搜索
更改
←上一编辑
Rust
(查看源代码)
2021年8月3日 (二) 20:18的版本
添加716字节
、
2021年8月3日 (二) 20:18
无编辑摘要
第11行:
第11行:
// 或者
// 或者
*hmap.entry("key").or_insert(42) += 10;
*hmap.entry("key").or_insert(42) += 10;
+
</syntaxhighlight>
+
+
== 代码片段 ==
+
+
=== 将某些不满足要求的 <code>Ok</code> 转化为 <code>Err</code> ===
+
+
<syntaxhighlight lang=rust>
+
/// Turns into an `Err(anyhow::Error)` some `Ok`s that meet the predicate
+
trait AdjustResult<T, E> {
+
fn adjust(self, predicate: impl Fn(&T) -> bool, msg: &str) -> Result<T>
+
where
+
E: Into<anyhow::Error>;
+
}
+
+
impl<T, E> AdjustResult<T, E> for Result<T, E> {
+
fn adjust(self, predicate: impl Fn(&T) -> bool, msg: &str) -> Result<T>
+
where
+
E: Into<anyhow::Error>,
+
{
+
match self {
+
Ok(o) if predicate(&o) => Err(anyhow!(msg.to_string())),
+
Ok(o) => Ok(o),
+
Err(e) => Err(e.into()),
+
}
+
}
+
}
</syntaxhighlight>
</syntaxhighlight>
Weirane
行政员
、
管理员
528
个编辑