借入的值与字符串和格式的寿命不足

时间:2018-07-11 12:54:09

标签: rust

我正在使用clap.rs来解析命令行参数,并且我在生命周期中苦苦挣扎,并使用String s来借用:

fn get_build_tool_kind_argument<'a>(short_arg: &'a str, long_arg : &'a str) -> Arg<'a, 'a> {
    let argument_name = format!("{}_pouet", long_arg);

    Arg::with_name(&argument_name)
        .short(short_arg)
        .long(long_arg)
        .takes_value(false)
        .help("Configure elements for maven build tool")
}

要调用该函数,请执行get_build_tool_kind_argument("m", "maven")

这是我得到的编译错误:

error[E0597]: `argument_name` does not live long enough
  --> src\main.rs:29:21
   |
29 |     Arg::with_name(&argument_name)
   |                     ^^^^^^^^^^^^^ borrowed value does not live long enough
...
34 | }

我看到了很多问题和文档,但似乎没有一个适用于我的情况。我对终生的理解仍然有限。

根据我在此处看到的内容,在函数结尾处释放了我注入的Arg名称的借位格式值,因此它无法使用,并在我调用get_build_tool_kind_argument时使用。我找不到继续使用format!宏来解决问题的方法。

0 个答案:

没有答案