小编not*_*lds的帖子

有没有办法为 &str 实现 Into<&str> 或 From<T> ?

正在用 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

10
推荐指数
1
解决办法
3726
查看次数

标签 统计

rust ×1