我如何在 Rust 中返回一个字符串向量?我试过:
fn test_vec() -> Vec<&str> {
vec!("foo", "bar")
}
编译器说了一些关于生命周期的事情,但我不确定我的问题真的是关于生命周期的:
src/main.rs:9:22: 9:26 error: missing lifetime specifier [E0106]
我有点迷茫,我想我误解(或忘记学习)了一些东西。
最佳答案
&str
不是String
。它是一个“字符串切片”,意思是一种指向 String
或存储在其他地方的等效内容的指针。在您的情况下,您使用的是字符串文字(使用引号为您提供字符串文字)。字符串文字是 &'static str
类型的,因为它们存储在与存储编译代码相同的位置,因此在 'static
生命周期内可用,这表示(至少)程序的整个运行时间。
因此,简单的解决方法是让您的方法返回特定类型:&'static str
。
编译器无法为返回的引用推断生命周期,因为您的函数不接受任何引用类型的参数。编译器在函数签名中推断生命周期的唯一方法是假设如果您要返回一个引用,它需要比它所引用的参数的生命周期短。更多信息请参阅 The Book
关于string - 我怎样才能返回一个字符串向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189014/