定义Struct
如下方式定义一个Struct结构体:
struct Person{
name: String,
age: u32,
email: String,
}
定义Struct后,可创建其实例对象:
fn main(){
let user1 = Person{
name: String::from("junmajinlong"),
email: String::from("junmajinlong@xx.com"),
age: 23,
};
println!(
"name: {}, age: {}, email: {}",
user1.name, user1.age, user1.email
);
}
Rust调试输出
上面示例中使用println!()
输出user1实例的各字段值,这样可以查看实例各属性的信息,但比较麻烦。
更方便的方式应该是直接输出struct实例,例如println!("{}", user1)
。实际上,如果指定的类型实现了Display(就像Ruby中定义了to_s
一样),那么可直接输出struct。
即使没有实现Display,Rust的println!()
也支持两种调试输出的语法{:?}
和{:#?}
,它们可以根据默认的格式输出数据类型。它们的作用就像Ruby里的p
方法和pp
方法一样。
但是,Rust不能直接使用这两个调试输出语法,它要求在目标struct的前面加上一行#[derive(Debug)]
。
例如:
#[derive(Debug)]
struct Person {
name: String,
age: u32,
email: String,
}
fn main() {
let user1 = Person {
name: String::from("junmajinlong"),
email: String::from("junmajinlong@xx.com"),
age: 23,
};
println!("{:?}", user1);
println!("{:#?}", user1);
}