Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // If your inner message implementation doesn't depend on the owner you can do this:
- #[derive(Default)]
- struct Message {
- e: Option<*mut u8>
- }
- trait Owner {
- type Message: Default;
- fn produce_message(&self) -> Self::Message {
- Default::default()
- }
- }
- struct You;
- struct Me;
- #[derive(Default)]
- struct YourMessage(Message);
- #[derive(Default)]
- struct MyMessage(Message);
- impl Owner for You { type Message = YourMessage; }
- impl Owner for Me { type Message = MyMessage; }
- impl Drop for YourMessage {
- fn drop(&mut self) {
- println!("drop YourMessage");
- println!("free(self.0.e)");
- }
- }
- impl Drop for MyMessage {
- fn drop(&mut self) {
- println!("drop MyMessage");
- println!("free_magic(self.0.e)");
- }
- }
- fn main() {
- let y = You;
- y.produce_message();
- let m = Me;
- m.produce_message();
- m.produce_message();
- }
Add Comment
Please, Sign In to add comment