我对Rust还很陌生,因为我决定直接从Python跳出来挑战自己。我不知道Result的返回类型,所以我想也许在这里我会找到一些帮助。
我目前正在编写一个实现input(message)函数的程序,如下所示:
fn input(message: &str) -> io::Result<String> {
print!("{}", message);
io::stdout().flush()?;
let mut user_input = String::new();
io::stdin().read_line(&mut user_input)?;
Ok(user_input.trim().to_owned())
}
(From代码运行良好,但我试图弄清楚如何使用std::result::Result
而不是io::Result
,只是因为。
我尝试将其转换为:
fn input(message: &str) -> Result<String, Error> {
/* */
}
但是编译器让我知道问号操作符不能将其错误转换为std::fmt::Error
。我只是想弄清楚如何正确地使用Result作为返回类型。我应该指定一个Err(something)返回吗?在这种情况下,我甚至不知道如何做。
我需要一个清楚的解释到底发生了什么(就像,非常清楚,这样我的猴子大脑就可以理解的东西)。
1条答案
按热度按时间col17t5w1#
您可以在自定义ErrorType中合并错误:
或者你也可以使用dyn errors(阅读rustbook中的更多内容):
在其他 * 生产就绪 * 方式中,您可以使用anyhow板条箱和thiserror板条箱