Rust Trait
Rust中的特征Trait类似于其他语言中的接口,它定义了一组可以被共享的行为,只要实现了特征,就能使用这组行为。 特征 Trait 特征的定义 通过trait关键字对特征进行定义。 pub trait Student { fn GoClass(&self); fn LeaveClass(&self); fn getClassRoom(&self) -> String; } 上述声明了**身为学生应该有的几个特征行为:**即上课,下课和获取教室房间号,那么其他具有学生性质的结构体(或者说为类)需要遵循该特征。 需要注意:特征只是坐函数签名,并不是真正的实现函数,函数的实现在绑定了该特征的类里实现,下面一节会提到。 类型实现特征 使用for关键字来为类实现特征。 pub struct Bob { pub year: String, pub sex: String } impl Student for Bob { // 实现特征 fn GoClass(&self){ // .... } fn LeaveClass(&self) { // ... } fn getClassRoom(&self) { // ... } } 在Bob类型中实现了Student特征声明的三个函数,这是必须的,除非在特征中有默认的实现。 如果特征中有默认的函数实现,那么绑定的类型可以不用再次实现函数,若实现了对应的函数,那么会覆盖默认的特征函数实现。如下所示。 pub trait Student { fn GoClass(&self){ println!("this is student!"); } fn LeaveClass(&self); fn getClassRoom(&self) -> String; } impl Student for Bob { fn GoClass(&self){ println!...