string - 我怎样才能返回一个字符串向量?

标签 string rust

我如何在 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/

相关文章:

c# - 哪一个是清除字符串生成器的性能明智的?

static - 获取对全局向量元素的引用

rust - 是否有替代方法或方法让 Rc<RefCell<X>> 限制 X 的可变性?

rust - 如果可能,实现 copy 的类型是否会被移动?

rust - 如何从 std::string::String 获取 bytes::bytes::Bytes?

c++ - 在 C++ 中拆分字符串(使用 cin)

r - 如何在 R 中使用正则表达式检测和删除缩写?

java - 关于反转字符串的问题

在C中复制字符串的结尾

rust - 由于 "ar crs" "malformed object (unknown load command 1)",无法在 macOS Mojave 上编译 Actix