rust - Implement one trait for multiple structs at once -
i have trait footrait has bunch of functions. have structs foostruct , barstruct , want implement footrait both structs methods doing same.
is there way implement footrait both foostruct , barstruct @ once? imagined following:
impl footrait foostruct + barstruct { // implement methods here }
no, there no way implement 1 trait multiple structs @ same time without metaprogramming macros.
i'd go far there's no reason to, either. if had "the methods doing same", should extract common member variables different struct , implement trait struct (if need trait anymore). can add new struct member of originals.
if had like
struct dog { hunger: u8, wagging: bool, } struct cat { hunger: u8, meowing: bool, } trait hungry { fn is_hungry(&self) -> bool; } you have
struct dog { hunger: hunger, wagging: bool, } struct cat { hunger: hunger, meowing: bool, } struct hunger { level: u8, } impl hunger { fn is_hungry(&self) -> bool { self.level > 100 } } if needed trait other reasons, can delegate it:
trait hungry { fn is_hungry(&self) -> bool; } impl hungry hunger { fn is_hungry(&self) -> bool { self.level > 100 } } impl hungry dog { fn is_hungry(&self) -> bool { self.hunger.is_hungry() } } impl hungry cat { fn is_hungry(&self) -> bool { self.hunger.is_hungry() } } these last 2 implementations still same, it's minimal amount of duplication. then, still hold out hope form of delegation introduced @ syntax level.
Comments
Post a Comment