来自临时 u8 切片的 Rust 字符串

Rust String from temporary u8 slice

我想运行一个命令并捕获它的输出。

let result = match Command::new(thing.command).output() {
            Ok(out) => String::from_utf8_lossy(&out.stdout),
            Err(_) => ....,
        };

我收到 &out.stdout 的错误 borrowed value does not live long enough。我理解这个问题,但我如何创建 u8 切片的副本并将完整所有权转移到新创建的字符串中?

from_utf8_lossy 的 return 值是 Cow:

pub fn from_utf8_lossy(v: &[u8]) -> Cow<'_, str>

如果您想创建副本并转让所有权,Cowinto_owned() 是专门为此设计的:

pub fn into_owned(self) -> <B as ToOwned>::Owned
Extracts the owned data.

Clones the data if it is not already owned.