如何在Rust中返回String Vector?我试过了:
fn test_vec() -> Vec<&str> {
vec!("foo", "bar")
}
编译器说了一些关于生命期的事情,但我不确定我的问题是关于生命期的:
src/main.rs:9:22: 9:26 error: missing lifetime specifier [E0106]
我有点迷失,我想我误解了(或忘了学习)。
答案 0 :(得分:5)
&str
不是String
。它是一个“字符串切片”,意思是一种指向String
或类似东西的指针,存储在其他地方。在你的情况下,你使用字符串文字(使用引号给你字符串文字)。字符串文字属于&'static str
类型,因为它们存储在存储编译代码的相同位置,因此可用于'static
生存期,这意味着(至少)整个运行时你的计划。
因此,简单的解决方法是让您的方法返回特定类型:&'static str
。
编译器无法推断返回引用的生命周期,因为您的函数不接受任何引用类型的参数。编译器推断函数签名中生命周期的唯一方法是假设如果要返回引用,它需要比它所引用的参数短。 The Book
中有更多信息