为啥它显示警告:从不读取字段:`group`?是不是有一些选项可以解决此警告?
Posted
技术标签:
【中文标题】为啥它显示警告:从不读取字段:`group`?是不是有一些选项可以解决此警告?【英文标题】:Why is it showing the warning: field is never read: `group`? Is there some option resolve this warning?为什么它显示警告:从不读取字段:`group`?是否有一些选项可以解决此警告? 【发布时间】:2021-05-18 17:29:51 【问题描述】:我是 rust 编程的新手。在这里,我正在使用 rust 开发一个 FLTK 应用程序。我收到以下警告。
warning: field is never read: `group`
--> src\views\logo.rs:13:5
|
13 | group: fltk::group::Group,
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
为什么显示警告:字段从未读取:group
?是否有一些选项可以解决此警告?
我的代码是这样的:
use fltk::image::*,
frame::Frame,
group::Group,
enums::Color,
// enums::Align,
;
use fltk::prelude::*;
use std::fs::read;
pub struct LogoImage
group: fltk::group::Group,
// // button: fltk::button::Button,
// logo_frame: Frame,
impl LogoImage
pub fn new(x:i32, y:i32, w:i32, h:i32, label:&'static str) -> LogoImage
let mut group = Group::new(x, y, w, h, label);
group.set_align(fltk::enums::Align::Center);
group.set_frame(fltk::enums::FrameType::FlatBox);
group.set_color(fltk::enums::Color::Red);
// group.set_type(fltk::group::PackType::Horizontal);
let mut logo_frame = Frame::default()
// .with_size(w, h)
.with_size(group.width(), group.height())
.center_of(&group)
.with_label("H");
logo_frame.set_frame(fltk::enums::FrameType::FlatBox);
logo_frame.set_color(Color::Yellow);
logo_frame.draw(|f|
// let image_data = read("assets\\app_icon.png").unwrap();
let mut img = PngImage::load("assets\\app_icon.png").unwrap();
img.scale(f.w(), f.h(), true, true);
img.draw(f.x(), f.y(), f.w(), f.h());
);
group.end();
LogoImage group // , logo_frame
有人能解释一下并给出解决方案吗(更喜欢代码中的解决方案而不是仅仅解释)?
【问题讨论】:
该字段不是pub
,也没有从其中读取的pub
方法。因此,编译器认为您可能会忽略该字段以及写入该字段的语句。始终可以在字段名称前加上下划线,以通知编译器它可能不会被使用,并禁止显示此警告。
如果在group: fltk::group::Group
之前使用pub
,该警告会消失吗?该结构已经是一个pub
对吗?那为什么又需要一个pub
呢?
隐藏结构内部的原因有很多。例如,当您从外部更改某些字段时,一致性可能会被破坏。这就是结构字段上有可见性修饰符的原因。
@SantoK.Thomas struct
字段(当未使用 pub
注释时)默认为定义它的模块私有。而且你没有在同一个模块中读取它的函数(这是该字段公开可用的范围)。所以它被认为是从未读过。
@SantoK.Thomas 我相信是的。或者,您可以将该字段重命名为 _group
(因此不需要 pub
),这样就可以抑制警告并且不影响字段可访问性。
【参考方案1】:
使结构的内部(内部变量)有意以_
(即_group
)开头以避免警告或在内部变量(即pub group ...
)前面使用pub并使用它在另一个 rs 文件中。
回答:
【讨论】:
以上是关于为啥它显示警告:从不读取字段:`group`?是不是有一些选项可以解决此警告?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 uitextfield 在成为第一响应者时从不返回 nil?
为啥我收到警告说必须初始化一个不可为空的字段(当我确定我正在初始化它时)?
为啥我sql语句用group by老查出两条连续相同的记录?比如本来3条结果,会出现6条。