如何返回字符串向量?

时间:2016-07-04 16:26:23

标签: string rust

如何在Rust中返回String Vector?我试过了:

fn test_vec() -> Vec<&str> {
    vec!("foo", "bar")
}

编译器说了一些关于生命期的事情,但我不确定我的问题是关于生命期的:

src/main.rs:9:22: 9:26 error: missing lifetime specifier [E0106]

我有点迷失,我想我误解了(或忘了学习)。

1 个答案:

答案 0 :(得分:5)

&str不是String。它是一个“字符串切片”,意思是一种指向String或类似东西的指针,存储在其他地方。在你的情况下,你使用字符串文字(使用引号给你字符串文字)。字符串文字属于&'static str类型,因为它们存储在存储编译代码的相同位置,因此可用于'static生存期,这意味着(至少)整个运行时你的计划。

因此,简单的解决方法是让您的方法返回特定类型:&'static str

编译器无法推断返回引用的生命周期,因为您的函数不接受任何引用类型的参数。编译器推断函数签名中生命周期的唯一方法是假设如果要返回引用,它需要比它所引用的参数短。 The Book

中有更多信息