Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何返回字符串向量?_String_Rust - Fatal编程技术网

String 如何返回字符串向量?

String 如何返回字符串向量?,string,rust,String,Rust,如何返回Rust中的字符串向量?我试过: fn test_vec() -> Vec<&str> { vec!("foo", "bar") } 我有点迷路了,我想我误解了(或忘了学习)一些东西。a&str不是字符串。它是一个“字符串切片”,意思是指向字符串或存储在其他地方的等价物的指针。在您的例子中,您使用的是字符串文字(使用引号可以获得字符串文字)。字符串文本的类型为&'static str,因为它们存储在编译代码存储的同一位置,因此在'static生存期内可

如何返回Rust中的字符串向量?我试过:

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

我有点迷路了,我想我误解了(或忘了学习)一些东西。

a
&str
不是
字符串。它是一个“字符串切片”,意思是指向
字符串或存储在其他地方的等价物的指针。在您的例子中,您使用的是字符串文字(使用引号可以获得字符串文字)。字符串文本的类型为
&'static str
,因为它们存储在编译代码存储的同一位置,因此在
'static
生存期内可用,这意味着(至少)程序的整个运行期内都可用

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



编译器无法推断返回引用的生存期,因为您的函数不接受任何引用类型的参数。编译器推断函数签名的生存期的唯一方法是假设如果返回引用,它需要比它引用的参数的生存期短。中有更多信息
&str
不是
字符串。它是一个“字符串切片”,意思是指向
字符串或存储在其他地方的等价物的指针。在您的例子中,您使用的是字符串文字(使用引号可以获得字符串文字)。字符串文本的类型为
&'static str
,因为它们存储在编译代码存储的同一位置,因此在
'static
生存期内可用,这意味着(至少)程序的整个运行期内都可用

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


编译器无法推断返回引用的生存期,因为您的函数不接受任何引用类型的参数。编译器推断函数签名的生存期的唯一方法是假设如果返回引用,它需要比它引用的参数的生存期短。还有更多的信息

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