小编A B*_*ton的帖子

rust str 从字符串中切片

“切片是一种引用,因此它没有所有权。”

以下代码经过简化。它需要使用 a 返回一个切片match。除了一个匹配臂之外,所有匹配臂都返回一个字符串切片。一只手臂需要在切片周围添加单引号,因此我们转向使用format!return String。然后该字符串必须转换为&str.

该错误表明生成的切片被匹配臂中的临时字符串引用。

11 |     ret
   |     ^^^ returns a value referencing data owned by the current function
Run Code Online (Sandbox Code Playgroud)

简化后的代码如下。请注意,我们没有使用文字,而是&str从第三方板条箱返回的文字。

fn my_func(input: &str) ->&str {
    
    let ret =
        match input {
            "a" => "Apha", // in fact, a &str from a crate
            _ => format!("'{}'", "Quoted" ).as_str(), 
        };
        
    ret
}
 
Run Code Online (Sandbox Code Playgroud)

&str是需要的,因为&str然后使用 推送push_str()。

fn main() {
    let mut s = String::new();
    s.push_str(my_func("a"));
    
...
Run Code Online (Sandbox Code Playgroud)

对于在匹配中复制 str …

string match slice rust

6
推荐指数
1
解决办法
8231
查看次数

标签 统计

match ×1

rust ×1

slice ×1

string ×1