2024年2月

先放弃这种想法,但是可以用泛型(或假多态)思维。
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();
    }
}