【问题标题】:"field `0` of struct is private" error on pub struct attributepub struct 属性上的“结构的字段‘0’是私有的”错误
【发布时间】:2019-06-04 23:15:06
【问题描述】:

“结构的字段0 是私有的”pub 结构属性错误

在板条箱中

pub struct A(String, String);

pub struct C {
    pub b: Vec<A>,
}

在main()中

...iter().map(|my_tuple:&A| (my_tuple.0.parse::<f64>().unwrap()));


为什么当属性为 pub、结构为 pub、父结构为 pub 时出现“struct is private”错误?

【问题讨论】:

标签: syntax module rust tuples access-modifiers


【解决方案1】:

您需要制作元组类型Apub 的片段。像这样的:

pub struct A(pub String, pub String)

【讨论】:

  • 这是否意味着结构中的信息在板条箱之外无法访问?看起来像箱子里的虫子。结构没有 impl。
  • 如果您不将pub 添加到元组的字段中,那么它们将在板条箱(和/或模块)之外无法访问。仅当您确实想向结构添加功能时才需要impl。听起来你不是箱子的作者(从你的问题中不清楚),箱子作者可能打算A 对外界不透明,以防止用户依赖其内部表示。例如,它可能是“句柄”类型。在这种情况下,会有函数使用/返回A。没有更多代码,这都是猜测。
  • @Ben 结构没有impl 这一事实并不意味着您不能访问这些字段。它们可以通过相应库中的转换特征、索引特征、任何自定义特征甚至不相关的数据结构来访问。
  • @Ben 它是什么箱子和类型?
猜你喜欢
  • 1970-01-01
  • 2010-09-29
  • 2012-02-11
  • 2011-02-13
  • 2020-12-04
  • 2014-04-04
  • 2019-08-26
  • 2017-12-09
相关资源
最近更新 更多