我有一个包含一些文本的.txt
文件。
a
b
...
z
我想得到Vec<Vec<&str>>
大小为N
或相等的块(实际上,下面的代码给了我<Vec<&[&str]>>
,我看不出有什么区别。我想&[&str]
是"借来的" Vec[&str]
想谷歌。)
下面是我的尝试:
fn read_input()<'a>() -> Vec<&'a[&'a str]> {
let input = include_str!(r"PATH\input.txt");
let lines_info = input.lines().collect::<Vec<&'a str>>();
let chunked_lines_info = lines_info.chunks(7).collect::<Vec<&'a [&'a str]>>();
chunked_lines_info
}
基本上,我想我知道为什么:chunks
从lines_info
中借用值,但在函数末尾释放了'lines_info',但我尝试返回一些借用释放数据的东西。
我尝试了这样的方法(我想更好):
fn read_input<'a>() -> Vec<[&'a str; 7]> {
let input = include_str!(r"PATH\input.txt");
let info = input.lines().array_chunks::<7>().collect();
info
}
但它给我"不稳定的库"错误。
1条答案
按热度按时间qxsslcnc1#
问题是
lines_info().chunks()
借用了lines_info
,不能比lines_info
更持久,你需要collect()
这些块,同样,你可以用'static
代替'a
: