rust - 从 Option<String> 转换为非空 &str 不移动

标签 rust

有没有更有效的方法来做到这一点:

let s_opt = Some("Abc".to_string());
let s2 = &s_opt.clone().unwrap_or("".to_string());
println!("s_opt = {s_opt:?}, s2 = {s2:?}");

如果我省略 clone() 调用,就会出现问题,因为 unwrap_or 移动 包装的 String值。

最佳答案

我想我找到了我正在寻找的东西:

let s2 = s_opt.as_deref().unwrap_or("");

它有点短,并且避免克隆原始 String 值。

关于rust - 从 Option<String> 转换为非空 &str 不移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70953809/

相关文章:

oop - 为二叉树实现 IntoIterator

rust - future 永远不要调用韦克可以吗

error-handling - 为什么当我返回一个错误类型时它没有被隐式转换?

rust - 如何在 rust 中声明除生命周期之外的相同类型的泛型参数?

utf-8 - 作为 16 位切片的格式错误的 UTF-8 的 WTF-8 字符串集

collections - 如何通过获取可变变量的所有权来替换它的值?

filter - 无法将过滤后的 Vec 收集到自身中

asynchronous - 克隆字符串以在Rust中进行异步移动关闭

rust - 为什么一些 std::fmt::Debug* 方法使用动态调度?

rust - 匹配时如何不借用期权?