小编orh*_*hun的帖子

借用的值在循环中存活的时间不够长

我正在尝试解析文件并Vec<Vec<&str>>从函数返回。但在推送到向量时,我在文件读取循环内遇到借用值错误。

use std::io::{self, BufReader, prelude::*};
use std::fs::File;

fn read() -> Vec<Vec<&'static str>> {
 let file = File::open("~/test").expect("failed to read file");
 let reader = BufReader::new(file);
 let mut main_vector: Vec<Vec<&str>> = Vec::new();
    for line in reader.lines() {
        match line {
            Ok(v) => {
                let mut sub_vector: Vec<&str> = Vec::new();
                for element in v.split_whitespace().collect::<Vec<&str>>() {
                    sub_vector.push(element);
                }
                main_vector.push(sub_vector);
            },
            Err(e) => panic!("failed to parse: {:?}", e),
        }
    }
    //return main_vector;
}
Run Code Online (Sandbox Code Playgroud)

这是编译器错误:

error[E0597]: `v` does not live long enough
  --> src/main.rs:67:32 …
Run Code Online (Sandbox Code Playgroud)

reference lifetime rust borrowing

7
推荐指数
1
解决办法
5289
查看次数

标签 统计

borrowing ×1

lifetime ×1

reference ×1

rust ×1