相关疑难解决方法(0)

为什么我不能在同一个结构中存储值和对该值的引用?

我有一个值,我想在我自己的类型中存储该值以及对该值内部内容的引用:

struct Thing {
    count: u32,
}

struct Combined<'a>(Thing, &'a u32);

fn make_combined<'a>() -> Combined<'a> {
    let thing = Thing { count: 42 };

    Combined(thing, &thing.count)
}
Run Code Online (Sandbox Code Playgroud)

有时候,我有一个值,我想在同一个结构中存储该值和对该值的引用:

struct Combined<'a>(Thing, &'a Thing);

fn make_combined<'a>() -> Combined<'a> {
    let thing = Thing::new();

    Combined(thing, &thing)
}
Run Code Online (Sandbox Code Playgroud)

有时,我甚至没有参考该值,我得到同样的错误:

struct Combined<'a>(Parent, Child<'a>);

fn make_combined<'a>() -> Combined<'a> {
    let parent = Parent::new();
    let child = parent.child();

    Combined(parent, child)
}
Run Code Online (Sandbox Code Playgroud)

在每种情况下,我都会收到一个错误,即其中一个值"活不够长".这个错误是什么意思?

lifetime rust borrow-checker

193
推荐指数
3
解决办法
2万
查看次数

将本地String作为切片返回(&str)

有几个问题似乎与我遇到的问题有关.例如,请看这里这里.基本上我正在尝试String在本地函数中构建一个函数,但是然后将其作为一个函数返回&str.切片不起作用,因为寿命太短.我无法str直接在函数中使用,因为我需要动态构建它.但是,我也不想返回a,String因为一旦它构建完成,它进入的对象的性质就是静态的.有没有办法让我的蛋糕也吃?

这是一个最小的非编译复制:

fn return_str<'a>() -> &'a str {
    let mut string = "".to_string();

    for i in 0..10 {
        string.push_str("ACTG");
    }

    &string[..]
}
Run Code Online (Sandbox Code Playgroud)

rust

37
推荐指数
3
解决办法
8961
查看次数

可变字符串的生存时间不足以执行for循环

我试图从输入文件中获取一个字符串并将信息解析为一个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 …
Run Code Online (Sandbox Code Playgroud)

rust

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

标签 统计

rust ×3

borrow-checker ×1

lifetime ×1