我想运行在此定义的测试:
fn run<'a>(args: &[&str], expected_value: &'a str) -> TestResult {
Command::cargo_bin("echor")?
.args(args)
.assert()
.success()
.stdout(expected_value);
Ok(())
}
#[test]
fn hello2() -> TestResult {
let expected = "Hello there\n";
run(&["Hello there"], expected)
}
我收到一个错误:
| fn run<'a>(args: &[&str], expected_value: &'a str) -> TestResult {
| -- -------------- `expected_value` is a reference that is only valid in the function body
| |
| lifetime `'a` defined here
32 | / Command::cargo_bin("echor")?
33 | | .args(args)
34 | | .assert()
35 | | .success()
36 | | .stdout(expected_value);
| | ^
| | |
| |___________________________`expected_value` escapes the function body here
| argument requires that `'a` must outlive `'static`
这是我开始生 rust ,我不知道如何处理这个问题。你能描述一下我做错了什么吗?我尝试了很多方法,改变为字符串类型和转换为字符串。但没有任何效果。
1条答案
按热度按时间esyap4oy1#
Stdout需要一个静态的参数,这个参数是随程序而活的,但是你给予它一个有寿命的引用,你可以给它一个引用,把它转换成一个字符串,然后把它给stdout方法;如下所示: