In C++, I've written this code:
class MessageHandler {
virtual MediaPlayer::Ptr handle_message(...);
virtual RtspServer::Ptr decideRtspServer(...);
virtual RtspClient::Ptr decideRtspClient(...);
virtual Decoder::Ptr decideDecoder(...);
virtual Renderer::Ptr decideRenderer(...);
};
This class handles a message that informs which RtspServer, RtspClient, Decoder, Renderer to use, and returns a MediaPlayer. I want to write MessageHandlers for lots of devices: Android, Windows, Linux, etc, so I can override each decision. For example, I can override decideRenderer to decide an specific renderer that is only available in Linux, but the rest should not be overridden as it's the same in all devices.
I'm looking to do the same in Rust: have default decisions but the ability to "override" one if needed, when implementing a MessageHandler for an specific device.
How can I achieve something similar in Rust? I don't care if it looks like OOP or not, I just want to prevent rewriting the same code.