gpt4 book ai didi

rust - 元组struct构造函数提示私有(private)字段

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

我正在研究一个基本的shell解释器,以熟悉Rust。在处理将挂起的作业存储在shell中的表时,我遇到了以下编译器错误消息:

error: cannot invoke tuple struct constructor with private fields [E0450]
let jobs = job::JobsList(vec![]);
^~~~~~~~~~~~~

我不清楚这里有什么隐私。如下所示,这两个结构在我的模块文件中都用 pub标记。那么,秘密调料是什么?
mod job {
use std::fmt;

pub struct Job {
jid: isize,
pid: isize,
cmd: String,
}

pub struct JobsList(Vec<Job>);
}

fn main() {
let jobs = job::JobsList(vec![]);
}

最佳答案

如错误消息所示,问题是JobsList有一个私有字段,即Vec<Job>值在定义struct的模块外部不可访问。这意味着您不能对JobsList值进行模式匹配来提取它,也不能直接构造它。
有两种修复方法:
公开该字段pub struct JobsList(pub Vec<Job>);
提供公共构造函数

impl JobsList {
pub fn new(jobs: Vec<Job>) -> JobsList {
JobsList(jobs)
}
}

JobsList::new(vec![])一样调用。

关于rust - 元组struct构造函数提示私有(private)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53359939/

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