本文是参考百度AI自动生成的文章,结合笔者自己的程序而写。
1。问题的提出:笔者在学习Rust编程时,需要一个结构体中包含时间类,在此结构体前,加了一个一个默认实例的宏,#[derive(Default)]。调试时,程序报错:“the trait `Default` is not implemented for `SystemTime`”,就是`SystemTime`类不能默认实例。
2。问题的解决:首先我查找了“Default.rs”中的说明,可以为结构体编写Default特性的default方法
其说明如下:
/// impl Default for Kind {
/// fn default() -> Self { Kind::A }
/// }
按“
Default.rs”中的说明,我结合自己的程序,写了如下的程序:
A。 首先注释掉 #[derive(Default)]这一语句
B。自行编写结构体的default方法
其中结构体如下
pub struct COrderFile{ //订单文件类
。。。。。。
m_time : SystemTime, //订单时间
。。。。。。
}
对应的default方法
impl Default for COrderFile {
fn default() -> Self {
。。。。。。
COrderFile::m_time = SystemTime::now()
。。。。。。
}
}
在参考百度搜索产生的文章后,修改default方法如下
#[allow(dead_code)]
impl Default for COrderFile {
fn default() -> Self {
COrderFile {
。。。。。。
m_time: SystemTime::now(),
。。。。。。
}
}
}
程序通过编译,并正确运行。
3。总结:为结构体编写实现Default特性的default方法时,其赋值与结构体的关联函数new()的书写方式是相同的。