rust语言学习笔记Trait之Default(默认值)

1、常用类型的默认值

rust 复制代码
let a:i32 = Default::default();                     // 0
let b:f32 =Default::default();                      // 0
let c:char=Default::default();                      // ""
let d:bool=Default::default();                      // false
let e:String=Default::default();                    // ""
let f:Vec<i32>=Default::default();                  // []
let g:Vec<String>=Default::default();               // []
let h:HashMap<String,String>=Default::default();    // {}

2、自定义结构体自动派生 Default

rust 复制代码
#[derive(Debug, Default)]
struct Person {
    name: String,
    age: u32,
}

let p = Person::default();
println!("{:?}", p);           // Person { name: "", age: 0 }

3、结构体手动实现 Default

rust 复制代码
#[derive(Debug)]
struct Config {
    host: String,    // 服务器地址
    port: u16,       // 端口
    timeout: u32,    // 超时时间
}

impl Default for Config {
    fn default() -> Self {
        Config {
            host: "localhost".to_string(),
            port: 8080,
            timeout: 100,
        }
    }
}

let config = Config::default();
println!("{:?}", config);       // Config { host: "localhost", port: 8080, timeout: 100 }

4、枚举派生 Default

rust 复制代码
#[derive(Debug, Default)]
enum Color{
    Red,
    #[default]                   // 添加到哪个值前,哪个值就是默认值
    Green,
    Blue,
}

let color = Color::default();
println!("{:?}", color);         // Green

总结

  • 优先使用 #[derive(Default)],除非需要自定义逻辑。
  • 在 API 设计中,为结构体默认实现 Default,提升易用性。
  • 在函数中使用 T::default() 替代 T::new(),增强泛型兼容性。
相关推荐
代码山河5 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
sbjdhjd6 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
释厄6236 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
海绵宝宝的月光宝盒9 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
小嘉丶学长10 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
niyongsheng10 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
白山编程大哥10 小时前
接口幂等性是什么?如何设计?
笔记
ACP广源盛1392462567310 小时前
6 盘位存储扩展方案选型笔记:YLB3116 @ACP评估记录
笔记·硬件架构·硬件工程·国产芯片
小李不想当小白10 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
Hello.Reader11 小时前
tsrs 技术解析用 Rust 移植 TypeScript 7,类型检查还能怎样提速?
开发语言·rust·typescript