通过impl关键字来定义一个类型的实现块,通过这个块可以:
- 为类型定义方法,通过
.访问 - 定义关联函数,通过
::访问 - 为类型实现某个
trait
#[derive(Debug)]
struct User {
id: i64,
user_name: String,
age: i8,
is_health: bool,
}
impl User {
// 需要传入当前实例,具体的实例可访问
fn get_name(&self) -> &str {
&self.user_name[..] // 返回名字的引用
}
fn get_age(&self) -> i8 {
self.age
}
// 属于结构体的方法,直接使用结构体访问
fn talk() -> String {
"我喜欢充满生命力的人".to_string()
}
}
fn main() {
let tom = User {
id: 1,
user_name: "Tom".to_string(),
age: 18,
is_health: true,
};
println!("{}", tom.get_name()); // 为类型定义方法
println!("{}", tom.get_age()); // 为类型定义方法
println!("{}", User::talk()) // 关联函数
}