正在用 Rust 编写一些代码,尝试使用(否则相当不错的) crate 来定义 CLI clap,但遇到了一个相当关键的问题。App接受 an的方法Into<&'help str>,我一直无法找到实现此特征的方法。
事实上,据我了解,这是绝对无法实现的:
struct JustWorkDamnIt {
string: String
}
impl From<JustWorkDamnIt> for &str {
fn from(arg: JustWorkDamnIt) -> Self {
return arg.string.as_str()
}
}
Run Code Online (Sandbox Code Playgroud)
...产生:
error[E0515]: cannot return value referencing local data `arg.string`
--> src/cmd/interactive.rs:25:16
|
25 | return arg.string.as_str()
| ----------^^^^^^^^^
| |
| returns a value referencing data owned by the current function
| `arg.string` is borrowed here
Run Code Online (Sandbox Code Playgroud)
然而有趣的是,返回一个文字编译得很好(我认为这就是为什么clap不介意使用这个特性)。大概这是因为文字被编译到内存的某个静态区域,因此不属于该函数:
error[E0515]: cannot return value referencing …Run Code Online (Sandbox Code Playgroud) rust ×1