fn test_1() {
//没有初始化会编译报错.use of possibly-uninitialized `i`
let i: i8 = Default::default();
let (x, y): (Option<String>, f64) = Default::default();
let (a, b, (c, d)): (i32, u32, (bool, bool)) = Default::default();
println!("{}", i);
println!("{:?},{:?}", x, y);
println!("{},{},{},{}", a, b, c, d);
}
fn test_2() {
#[derive(Default, Debug)] //(Debug是为了方便打印)
struct MyTest {
i: i32,
j: Option<i32>,
k: String,
}
let mt = MyTest::default();
println!("{:?}", mt);
}
//自己写default
fn test_3() {
#[derive(Debug)]
enum Kind {
A,
B,
C,
}
impl Default for Kind {
fn default() -> Self {
//fn default() -> Kind { 这么写也是可以的
Kind::A
}
}
let k = Kind::default();
println!("{:?}", k);
}
fn test_4() {
#[derive(Default, Debug)]
struct SomeOptions {
foo: i32,
bar: f32,
}
//结构体其他成员默认化
let options = SomeOptions { foo: 42, ..Default::default() };
}
fn main() {
test_1();
test_2();
test_3();
test_4();
}
17.默认值Default.rs
猜你喜欢
转载自blog.csdn.net/liujiayu2/article/details/114387608
今日推荐
周排行