我编写了一些解析配置文件的代码。如果配置文件包含它在Config
结构中设置的字段的有效值。如果未找到设置的有效整数值,则设置默认值(例如:90)。
let config = Config {
interval: settings.get("interval").unwrap().parse().unwrap_or(90),
}
如何使这个闭合,以便它可以通过error!
打印并设置默认值?
看起来如下:
let config = Config {
interval: settings.get("interval").unwrap().parse().unwrap_or({
error!("No interval found. Using default: 90");
90
});
}
但在此示例中,即使从配置中读取了间隔中的有效值,也始终执行error!
。
我怎样才能使unwrap_or只在optb
失败时执行parse()
中的代码?
我怎样才能使
unwrap_or
在optb
失败时只执行parse()
中的代码?
unwrap_or
的论据得到了热切的评价。unwrap_or_else
。在您的方案中,应更改如下:
let config: Config = Config {
interval: settings.get("interval").unwrap().parse().unwrap_or_else(|_| {
error!("No interval found. Using default: 90");
90
}),
}
此外,您不应该在生产代码中使用裸unwrap()
。错误处理是更好的解决方案,而不是使用裸unwrap()
Here你可以找到你不应该使用unwrap()
的详细信息