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(),增强泛型兼容性。
相关推荐
wgego23 分钟前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
云贝教育-郑老师27 分钟前
OceanBase 是如何搞定海量数据分片(Sharding)的?
学习·oceanbase·dba
编程圈子1 小时前
电机驱动开发学习23. 保护体系与故障状态机
驱动开发·学习
别动我齐刘海2 小时前
Day6 unitree_G1人形机器人GMR—— MotionInput
c语言·c++·人工智能·学习·机器学习·机器人·github
神秘的MT3 小时前
C# WinForm Socket 服务器 + 串口转发
服务器·网络·学习·c#
依然范特东3 小时前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
zzzll11113 小时前
0基础入门大模型:一份清晰的学习路线图
人工智能·学习·chatgpt
正经人_x4 小时前
学习日记48:DenseCLIP
学习
DevangLic5 小时前
monkeycode-使用说明
学习·ai
晴天165 小时前
Rust 快速入门 (从 JavaScript 开发者视角)-Day09
开发语言·javascript·rust