首页 > 解决方案 > 如何将选项映射到字符串以进行格式化,同时提供 &'static str 作为默认值?

问题描述

我有一个返回Option<>结果的函数。我想用这样的后备打印它:

println!("Result: {}", result.map_or("not found", |r| r.to_string()));

不幸的是,这样我要么:

有没有办法在保持默认值的同时进行这种转换&'static str

标签: rust

解决方案


使用 and 的组合Option::as_refmap_or诀窍是借用拥有Option<String>的 with as_ref

println!(
    "Result: {}",
    result.as_ref().map_or("not found", String::as_str)
);

操场

根据评论,如果是泛型类型,map请先将其转换为 String (分配它),然后与上述相同的过程:

result
    .map(|f| foo_to_string(&f))
    .as_ref()
    .map_or("not found", String::as_str)

操场


推荐阅读