Rust/?演算子
RustのResult<T, E>に関する演算子
code:.rs
#derive(Debug)
struct LoadError;
fn read_data() -> Result<String, LoadError> {
Ok(String::from("data"))
}
fn process_data() -> Result<usize, LoadError> {
// Ok(value) なら value を取り出す
// Err(error) ならその場で return Err(error) する
let data = read_data()?;
Ok(data.len())
}
// 以下と等価
fn process_data() -> Result<usize, LoadError> {
let data = match read_data() {
Ok(value) => value,
Err(error) => return Err(error),
};
Ok(data.len())
}