You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust如何访问vector中结构体的枚举Variant并匹配Option字段

错误原因

  • 字段访问语法不符合Rust规则:你定义的students是存储Student结构体实例的动态数组,不是结构体类型,不存在students.Student::locker这种访问写法。你在for循环中拿到的每一个student就是单个Student结构体实例,直接通过student.locker就能获取对应学生的locker字段值。
  • 补充:如果要打印学生姓名,需要先给StudentNames枚举实现Debug特征,否则无法直接输出枚举变体内容。

修正后的可运行代码

// 给枚举实现Debug特征支持打印
#[derive(Debug)]
enum StudentNames {
    Vlad, 
    Andrei,
    Dragos,
}

struct Student {
    student_name: StudentNames,
    locker: Option<i32>,
}

fn main() {
    let students = vec![
        Student {
            student_name: StudentNames::Vlad,
            locker: Some(1),
        },
        Student {
            student_name: StudentNames::Andrei,
            locker: Some(2),
        },
        Student {
            student_name: StudentNames::Dragos,
            locker: None,
        },   
    ];
    for student in students {
        // 直接访问student实例的locker字段做匹配
        match student.locker {
            Some(locker_num) => println!("学生{:?}的储物柜编号是{}", student.student_name, locker_num),
            None => println!("学生{:?}没有分配储物柜", student.student_name),
        }
    }
}

运行输出

学生Vlad的储物柜编号是1
学生Andrei的储物柜编号是2
学生Dragos没有分配储物柜

内容的提问来源于stack exchange,提问作者VladAcV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:04