6 个版本
0.3.1 | 2019年8月27日 |
---|---|
0.3.0 | 2019年8月20日 |
0.2.2 | 2019年8月19日 |
0.2.0 | 2019年2月6日 |
0.1.0 | 2019年2月5日 |
#1240 in 数据结构
66 每月下载
在 6 个crate中使用 (直接使用3个)
14KB
229 代码行
此库提供了 Ensure
trait,它对于具有未知初始外部状态的对象且可以将其转换为某种目标状态非常有用。
这可以视为具有未知初始外部状态和所需目标状态的具有副作用的对象的 TryInto
trait。例如,一个文件可能存在或不存在。通过实现 Ensure
,我们可以在文件不存在的情况下创建新文件。
返回 CheckEnsureResult
的闭包,同时也返回在 CheckEnsureResult::EnsureAction
变体中的闭包,将自动实现 Ensure
trait。辅助函数 ensure
可以用于调用此类闭包上的 ensure()
。
示例
此程序仅在文件不存在的情况下创建文件。
use std::path::Path;
use std::fs::File;
use ensure::ensure;
use ensure::CheckEnsureResult::*;
fn main() {
let path = Path::new("/tmp/foo.txt");
ensure(|| {
Ok(if path.exists() {
Met(())
} else {
EnsureAction(|| {
File::create(&path).map(|file| drop(file))
})
})
}).expect("failed to create file");
}