[−][src]Macro wayland_server::request_enum
Generate an enum joining several objects requests
This macro allows you to easily create a enum type for use with your message Filters. It is used like so:
request_enum!( MyEnum | Pointer => WlPointer, Keyboard => WlKeyboard, Surface => WlSurface );
This will generate the following enum, unifying the requests from each of the provided interface:
ⓘThis example is not tested
pub enum MyEnum { Pointer { request: WlPointer::Request, object: Main<WlPointer> }, Keyboard { request: WlKeyboard::Request, object: Main<WlKeyboard> }, Surface { request: WlSurface::Request, object: Main<WlSurface> } }
It will also generate the appropriate From<_>
implementation so that a Filter<MyEnum>
can be
used as assignation target for WlPointer
, WlKeyboard
and WlSurface
.
If you want to add custom messages to the enum, the macro also supports it:
request_enum!( MyEnum | Pointer => WlPointer, Keyboard => WlKeyboard, Surface => WlSurface | MyMessage => SomeType, OtherMessage => OtherType );
will generate the following enum:
ⓘThis example is not tested
pub enum MyEnum { Pointer { request: WlPointer::Request, object: Main<WlPointer> }, Keyboard { request: WlKeyboard::Request, object: Main<WlKeyboard> }, Surface { request: WlSurface::Request, object: Main<WlSurface> }, MyMessage(SomeType), OtherMessage(OtherType) }
as well as implementations of From<SomeType>
and From<OtherType>
, so that these types can
directly be provided into a Filter<MyEnum>
.