1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use ::std::fmt;
use ::std::io;
pub type ShredResult<T> = Result<T, String>;
pub fn wrap_io<T, S: AsRef<str>>(
base_msg: impl FnOnce() -> S,
res: io::Result<T>,
) -> ShredResult<T> {
match res {
Ok(val) => ShredResult::Ok(val),
Err(val) => ShredResult::Err(format!("{}: {}", base_msg().as_ref(), val)),
}
}
pub fn add_err(msg: impl Into<String>, verbose: bool, err: impl fmt::Debug) -> String {
let mut msg = msg.into();
if verbose {
msg.push_str("; details: ");
msg.push_str(&format!("{:?}", err));
}
msg
}