macro_rules! new_default_environment { ($env_name:ident, desktop $(, with=($display:expr, $queue:expr))? $(,fields = [$($fname:ident : $fval:expr),* $(,)?])? $(,)? ) => { ... }; ($env_name:ident, with=($display:expr, $queue:expr) $(,fields = [$($fname:ident : $fval:expr),* $(,)?])? $(,)? ) => { ... }; ($env_name:ident $(,fields = [$($fname:ident : $fval:expr),* $(,)?])? $(,)? ) => { ... }; }
Expand description
Initialize a batteries-included SCTK environment
Sister macro of default_environment!. You need
to use it to initialize the environment instead of
Envrionment::init. It has the same semantics.
If a preset was used for default_environment!, it
must be provided here as well.
The macro will automatically setup a Wayland connection and evaluate to a Result
containing either Ok((env, display, queue)), providing you the initialized Environment
as well as the wayland Display and EventQueue associated to it, or to an error
if the connection failed.
let (env, display, queue) = new_default_environment!(MyEnv,
desktop, // the optional preset
/* initializers for your extra fields if any, can be ommited if no fields are added */
fields=[
somefield: 42,
otherfield: String::from("Hello World"),
]
).expect("Unable to connect to the wayland compositor");If you instead want the macro to use some pre-existing display and event queue, you can
add the with argument providing them. In that case the macro will evaluate to
a Result<Environment, io::Error>, forwarding to you any error that may have occured
during the initial roundtrips.
let env = new_default_environment!(MyEnv,
desktop, // the optional preset
with=(display, queue), // the display and event queue to use
/* initializers for your extra fields if any, can be ommited if no fields are added */
fields=[
somefield: 42,
otherfield: String::from("Hello World"),
]
).expect("Initial roundtrips failed!");