1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| #[derive( Debug, // 调试输出 {:?} Clone, // 深拷贝 .clone() PartialEq, // 相等比较 ==、!= Eq, // 完全相等(要求 PartialEq) PartialOrd, // 部分排序 <、>、<=、>= Ord, // 全排序(要求 Eq + PartialOrd) Hash, // 可作为 HashMap 的键 )] struct Student { name: String, age: u32, grade: u32, }
#[derive(Debug, Clone, Copy, PartialEq)] struct Point { x: f64, y: f64, }
#[derive(Debug, Default)] struct Config { width: u32, height: u32, title: String, fullscreen: bool, }
fn main() { let s1 = Student { name: String::from("张三"), age: 20, grade: 3, }; let s2 = s1.clone(); println!("s1: {:?}", s1); println!("s2: {:?}", s2);
println!("s1 == s2: {}", s1 == s2);
let mut students = vec![ Student { name: String::from("王五"), age: 22, grade: 4 }, Student { name: String::from("张三"), age: 20, grade: 3 }, Student { name: String::from("李四"), age: 21, grade: 3 }, ]; students.sort(); println!("排序后: {:#?}", students);
let p1 = Point { x: 1.0, y: 2.0 }; let p2 = p1; println!("p1: {:?}, p2: {:?}", p1, p2);
let config = Config::default(); println!("默认配置: {:?}", config);
let custom_config = Config { width: 1920, height: 1080, ..Config::default() }; println!("自定义配置: {:?}", custom_config); }
|