Derive Macro durian_macros::DerefPacketManager
source · #[derive(DerefPacketManager)]
Expand description
Convenience derive macro that implements [Deref
] and [DerefMut
] for a struct that contains a
manager: PacketManager
field.
This is especially useful in situations where you must wrap a PacketManager behind a struct, such as in Bevy where you want to insert the PacketManager as a Resource, but can’t annotate the PacketManager struct itself.
For example:
#[derive(DerefPacketManager)]
struct ClientPacketManager {
manager: PacketManager
}
Generates this code:
struct ClientPacketManager {
manager: PacketManager
}
impl std::ops::Deref for ClientPacketManager {
type Target = (durian::PacketManager);
fn deref(&self) -> &Self::Target {
&self.manager
}
}
impl std::ops::DerefMut for ClientPacketManager {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.manager
}
}
You can then automatically access PacketManager
functions through a ClientPacketManager
like this:
let manager = ClientPacketManager { manager: PacketManager::new() };
// Directly call PacketManager functions through our manager variable without accessing the underlying field
manager.init_client(ClientConfig::new("127.0.0.1:5001", "127.0.0.1:5000", 2, 2);