Rust多态和继承
先放弃这种想法,但是可以用泛型(或假多态)思维。
Rust中其实归根到底还是函数编程的思维占主要的的,虽然有结构这东西可能实现面向对象编程,但是更多设计思维上还是函数。但是了为代码简洁还是要使用继承和多态。
暂定思维:
1.继承 == 全局Util函数,或者使用宏
2.多态使用 trait
看下面代码:
pub trait Monter {
fn p1(&self);
}
pub struct Mon1{
pub name:String,
}
pub struct Mon2{
pub name:String,
}
impl Monter for Mon1 {
fn p1(&self) {
println!("mon1 {}", self.name);
}
}
impl Monter for Mon2 {
fn p1(&self) {
println!("mon2 {}", self.name);
}
}
就是保持每个“子类”都有相同的方法。
下面实现调用:重点 &dyn 还有 :: 变成 .
fn test_mod1() {
let mon1 = Mon1{ name: "test1".to_owned()};
let mon2 = Mon2{ name: "test2".to_owned()};
for i in 0..10 {
let tmp:&dyn Monter = if i % 2 == 0 {
&mon1
}else{
&mon2
};
tmp.p1();
}
}