【发布时间】:2020-06-07 08:51:06
【问题描述】:
目的是获取调用二进制文件的输出,获取该输出的最后一行,将其拆分,并获取索引 1 处的字符串。
这是尝试:
let result:Result<String, FromUtf8Error> = String::from_utf8(output.stdout);
let value = result.map(move |res| {
res.lines()
.last()
.unwrap_or(String::from("").as_ref())
.split(" ")
.collect::<Vec<&str>>()[1]
});
两个问题:
第一个,上面的代码导致编译错误:
57 | / res.lines()
58 | | .last()
59 | | .unwrap_or(String::from("").as_ref())
| | ---------------- temporary value created here
60 | | .split(" ")
61 | | .collect::<Vec<&str>>()[1]
| |______________________________________^ returns a value referencing data owned by the current function
第二个,我意识到value 的类型是Result<<unknown>,FromUtf8Error>,而不是我预期的Result<<String>,FromUtf8Error>。
那么如何修复编译错误并获得正确的类型呢?
【问题讨论】:
标签: rust