gpt4 book ai didi

rust - 可变字符串的生命周期不足以执行 for 循环

转载 作者:行者123 更新时间:2023-11-29 08:11:19 24 4
gpt4 key购买 nike

我正在尝试从输入文件中获取一个字符串并将信息解析为结构的 HashMap:

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

pub struct Student {
c_num: &'static str,
cla: i32,
ola: i32,
quiz: i32,
exam: i32,
final_exam: i32,
}

impl Student {
pub fn new(
c_num: &'static str,
cla: i32,
ola: i32,
quiz: i32,
exam: i32,
final_exam: i32,
) -> Student {
Student {
c_num: c_num,
cla: cla,
ola: ola,
quiz: quiz,
exam: exam,
final_exam: final_exam,
}
}

pub fn from_file(filename: String) -> Vec<Student> {
let mut f = File::open(filename).expect("File not found");
let mut contents = String::new();

f.read_to_string(&mut contents);

let mut students: Vec<Student> = Vec::new();

for i in contents.lines().skip(1) {
let mut bws = i.split_whitespace();
let stdnt: Student = Student::new(
bws.next().unwrap(),
bws.next().unwrap().parse().unwrap(),
bws.next().unwrap().parse().unwrap(),
bws.next().unwrap().parse().unwrap(),
bws.next().unwrap().parse().unwrap(),
bws.next().unwrap().parse().unwrap(),
);

students.insert(0, stdnt);
}

students
}
}

fn main() {}

当我尝试编译时,编译器给了我这个。

error[E0597]: `contents` does not live long enough
--> src/main.rs:39:18
|
39 | for i in contents.lines().skip(1) {
| ^^^^^^^^ borrowed value does not live long enough
...
54 | }
| - borrowed value only lives until here
|
= note: borrowed value must be valid for the static lifetime...

为什么 contents 变量需要在函数返回后存活?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com