gpt4 book ai didi

rust - 我如何重新组织我的结构和特征以拥有基本行为和继承行为的容器?

转载 作者:行者123 更新时间:2023-11-29 08:35:52 27 4
gpt4 key购买 nike

继续 my previous question ,我的目标是创建一个继承场景库的场景,并从那里将新场景推送到容器中。您可以从容器中弹出场景,然后显示一个窗口或过渡到一个新 map 或任何您想在该特定场景中执行的操作:

#[derive(Debug)]
struct SceneBase {
active: bool,
isReady: bool,
}

trait SceneBase {
fn new() -> Self;
fn isActive() -> bool;
fn isReady() -> bool;
fn start();
fn update();
fn stop();
}

#[derive(Debug)]
struct SceneContainer {
container: Box<SceneBase>,
}

trait SceneContainer {
fn new(scene: SceneBase) -> Self;
fn updateChildren();
fn pop();
}

我正在以面向对象的方式处理这个问题,我知道 Rust 并不是真正的 OO。我如何重新组织我的结构和特征,以便我拥有某种其他场景继承的基础,然后可以将其推送到容器中进行“存储”,直到需要时使用?

关于如何摆脱 OO 并更多地思考......有什么想法可以在这方面发挥作用吗?

最佳答案

这个问题很笼统,但作为一个笼统的答案:如果你想替换继承机制,做一些组合:

struct Thing {
stuff: i32,
extension: Box<ThingExtension>,
}

impl Thing {
fn new(stuff: i32, extension: Box<ThingExtension>) -> Self {
Thing { stuff, extension }
}
}

trait ThingExtension {
fn do_something(&self, stuff: i32);
}

这个片段是 self 理解的:用户将实现 ThingExtension 特性来构建一个真正的 Thing

关于rust - 我如何重新组织我的结构和特征以拥有基本行为和继承行为的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com