在 Rust 中将字符串转换为 &str [duplicate]

Convert String to &str in Rust [duplicate]

提问人:inyourface3445 提问时间:3/8/2023 更新时间:3/9/2023 访问量:174

问:

我正在尝试将 a 转换为 .但问题是 rust 总是会抛出这个错误:String&str

error[E0515]: cannot return value referencing local variable `contents`
   --> src/utils.rs:111:5
    |
72  |         let contents = &contents[..];
    |                         -------- `contents` is borrowed here
...
111 |     result
    |     ^^^^^^ returns a value referencing data owned by the current function

For more information about this error, try `rustc --explain E0515`.

如何将变量转换为 &str?

字符串 类型转换

评论

1赞 cafce25 3/8/2023
只需返回一个 这是你想要的 在 99.9% 的情况下。另请参阅 将本地字符串作为切片 (&str) 返回String
0赞 inyourface3445 3/9/2023
代码的目标是返回一个 .我不能在这里只返回一个字符串。Vec<&str>
6赞 cafce25 3/9/2023
然后你要返回,除非你泄漏内存,否则你不能在没有所有者的情况下创建引用。Vec<String>
1赞 Masklinn 3/9/2023
您的代码太不完整,无法提供任何具体的帮助,我们只能说您正在尝试返回对在当前函数中创建或移动的引用,这是不允许的(毕竟您总是可以泄漏字符串)。要么找到一种方法不这样做,要么更改返回类型以返回拥有的数据。String
0赞 inyourface3445 3/9/2023
我只是让它返回一个字符串向量,这修复了一切。

答:

0赞 inyourface3445 3/9/2023 #1

事实证明,那时候最好回来.这解决了我的问题。感谢 cafce25 提供这个想法。Vec<String>Vec<&str>

评论

1赞 Roger Filmyer 3/9/2023
如果你正在为 rust 生命周期而苦苦挣扎,一个安全的经验法则是编写接受引用和返回值的函数(所以在这种情况下,取 s 并返回 s)&strString