我正在使用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!
宏来解决问题的方法。