为啥它显示警告:从不读取字段:`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 文件中。 回答:

使用 fltk::图像::*, 框架::框架, 组::组, 枚举::颜色, // 枚举::对齐, ; 使用 fltk::prelude::*; 使用 std::fs::read; 酒吧结构标志图像 _group: fltk::group::Group, // 或 pub group: ....... 实现徽标图像 pub fn new(x:i32, y:i32, w:i32, h:i32, label:&'static str) -> LogoImage 让 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::Horizo​​ntal); 让 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(颜色::黄色); logo_frame.draw(|f| // 让 image_data = read("assets\\app_icon.png").unwrap(); 让 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

【讨论】:

以上是关于为啥它显示警告:从不读取字段:`group`?是不是有一些选项可以解决此警告?的主要内容,如果未能解决你的问题,请参考以下文章

mysql为啥group by不能显示全部数据

为啥 uitextfield 在成为第一响应者时从不返回 nil?

为啥我收到警告说必须初始化一个不可为空的字段(当我确定我正在初始化它时)?

为啥我sql语句用group by老查出两条连续相同的记录?比如本来3条结果,会出现6条。

为啥模块的导入导出会给出错误,因为声明了“BlogpostModule”但它的值从不读取.ts(6133)“角度7

group_concat 是不是有长度限制或它不能在文本字段上工作的其他原因