Rust编程:学生结构体、枚举与模块的实战解析

需积分: 5 0 下载量 105 浏览量 更新于2024-08-12 收藏 3KB TXT 举报
"该资源是一个Rust编程语言的示例代码,主要展示了如何使用enum、struct、mod、方法(method)以及match语句。通过一个简单的学生成绩比较的场景,作者定义了一个名为`Stu`的学生结构体,包含了学号(id)和成绩(score)字段,并为该结构体添加了`set_info`和`show_info`方法。此外,还定义了一个枚举`RetSta`来表示比较结果。代码中还涉及到了模块(module)的组织和权限控制,以及如何在模块内部使用super关键字来引用父模块的成员。" 在Rust中,`enum`是一种强大的数据类型,可以用来定义枚举,这里定义的`RetSta`枚举有`Sta(i32)`一个变种,用于存储比较结果。`struct`则用于创建自定义的数据结构,如`Stu`结构体,包含了`id`和`score`两个字段。`impl`块用于实现结构体或枚举的方法,这里为`Stu`结构体实现了`set_info`和`show_info`两个方法,前者用于设置学生的信息,后者用于打印学生信息。 `mod`是Rust中的模块系统,用于组织代码,提高可读性和可维护性。在本示例中,`student`模块下包含了`cmp`子模块,`cmp`模块中有两个公共函数`cmp_id`和`cmp_score`,分别用于比较学号和成绩。`cmp_score`函数返回的是枚举`RetSta`的实例,根据比较结果赋值。`cmp_info`模块中定义了一个与`cmp`模块相同功能的`cmp_score`函数,但用于演示super关键字的使用,通过`super::cmp::cmp_score`可以引用父模块`cmp`中的函数。 `fn`关键字用于声明函数,这里的函数都接收两个`&u32`类型的参数,表示传入学号的引用,避免了值的复制,同时也确保不会修改原始数据。`if`和`else`语句用于逻辑判断,`match`关键字虽然在提供的代码中没有出现,但在实际使用中,它经常与枚举结合,根据枚举的值执行不同的代码块。 这个示例展示了Rust中如何定义和操作自定义数据类型,如何构建模块化代码,以及如何进行基础的比较和返回结果。这对于理解和学习Rust语言的关键特性非常有帮助。