Dzwebs.Net

撰写电脑技术杂文十余年

rust之impl display,debug的用途

Admin | 2023-2-5 14:46:50 | 被阅次数 | 758

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在rust中,有的时候需要针对结构体的信息进行格式化的个性化输出,而不使用系统默认的通用方法输出,因此,就需要使用到impl display,debug这三个保留字构造输出,下面是方法。

  第一种情况:使用系统默认的方法

#[derive(Debug)]//这里就是系统默认的方法

struct Infor{
name:String,
age:i32,
}

println!("开始了…");
    let myinfor=Infor{name:"青山".to_string(),age:39};
println!("Display: {:?}",myinfor);
println!("name: {}",myinfor.name);
println!("age: {}",myinfor.age);
println!("Debug: {:?}",myinfor);

上述的代码运行后输出:

开始了…
Display: Infor { name: "青山", age: 39 }
name: 青山
age: 39
Debug: Infor { name: "青山", age: 39 }

  第二种方法:使用自定义的方法

注意,使用自定义方法,就不能使用#[derive(Debug)]这一句了。

use std::fmt;
struct Infor{
name:String,
age:i32,
}
impl fmt::Display for Infor{
fn fmt(&self,f: &mut fmt::Formatter) -> fmt::Result{
        write!(f,"姓名:{}, 年龄:{}",self.name,self.age)
    }
}
impl std::fmt::Debug for Infor {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "姓名:{} 年龄:{}", self.name, self.age)
}
}

println!("开始了…");
    let myinfor=Infor{name:"青山".to_string(),age:39};
println!("Display: {:?}",myinfor);
println!("name: {}",myinfor.name);
println!("age: {}",myinfor.age);
println!("Debug: {:?}",myinfor);

  上述代码红色文字,即为个性化的地方。上述代码运行后输出:

开始了…
Display: 姓名:青山 年龄:39
name: 青山
age: 39
Debug: 姓名:青山 年龄:39


该杂文来自: 最新技术

上一篇:rust之thread.futures.block多线程示例

下一篇:rust自定义函数输出日期时间年月日时分秒毫秒的代

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计