Rust 什么是锈蚀相当于C++';s虚拟覆盖以防止代码重写? 在C++中,我编写了这个代码: class消息处理程序{ 虚拟媒体播放器::Ptr句柄_消息(…); 虚拟RtspServer::Ptr decideRtspServer(…); 虚拟RtspClient::Ptr decideRtspClient(…); 虚拟解码器::Ptr decisedecoder(…); 虚拟渲染器::Ptr决策器(…); };

Rust 什么是锈蚀相当于C++';s虚拟覆盖以防止代码重写? 在C++中,我编写了这个代码: class消息处理程序{ 虚拟媒体播放器::Ptr句柄_消息(…); 虚拟RtspServer::Ptr decideRtspServer(…); 虚拟RtspClient::Ptr decideRtspClient(…); 虚拟解码器::Ptr decisedecoder(…); 虚拟渲染器::Ptr决策器(…); };,rust,Rust,此类处理一条消息,通知要使用哪个RtspServer,RtspClient,解码器,渲染器,并返回一个MediaPlayer。我想为很多设备编写MessageHandlers:Android、Windows、Linux等,这样我就可以覆盖每个决定。例如,我可以覆盖deciderender,以确定仅在Linux中可用的特定渲染器,但不应覆盖其余渲染器,因为它在所有设备中都是相同的 我希望在Rust中也能做到这一点:在为特定设备实现MessageHandler时,拥有默认决策,但如果需要,能够“覆盖

此类处理一条消息,通知要使用哪个
RtspServer
RtspClient
解码器
渲染器
,并返回一个
MediaPlayer
。我想为很多设备编写
MessageHandler
s:Android、Windows、Linux等,这样我就可以覆盖每个决定。例如,我可以覆盖
deciderender
,以确定仅在Linux中可用的特定渲染器,但不应覆盖其余渲染器,因为它在所有设备中都是相同的

我希望在Rust中也能做到这一点:在为特定设备实现
MessageHandler
时,拥有默认决策,但如果需要,能够“覆盖”一个决策


我怎样才能在生锈方面取得类似的成就?我不在乎它是否看起来像OOP,我只想防止重写相同的代码。

什么是针对trait对象的?大致如下:

trait MessageHandler {
    handle_message(...) -> Box<MediaPlayer> {
        Box::new(DefaultMediaPlayer{})
    }
    decideRtspServer(...) -> Box<RtspServer> {
        Box::ne(DefaultRtspServer{})
    }
    // and others
};

struct LinuxMessageHandler {...}
impl MessageHandler for LinuxMessageHandler {
    handle_message(...) -> Box<MediaPlayer> {
        Box::new(LinuxSpecificMediaPlayer{})
    }
    // do not implement any other method: instead, automatically "inherit" them from MessageHandler
}
trait MessageHandler{
句柄_消息(…)->框{
框::新建(DefaultMediaPlayer{})
}
decideRtspServer(…)->Box{
Box::ne(DefaultRtspServer{})
}
//及其他
};
结构LinuxMessageHandler{…}
LinuxMessageHandler的impl MessageHandler{
句柄_消息(…)->框{
框::新建(LinuxSpecificMediaPlayer{})
}
//不要实现任何其他方法:而是从MessageHandler自动“继承”它们
}

然后,这些“trait对象”被传递,例如,
Box

您知道trait方法可以有默认实现吗?