macro_rules! run {
(
// addr is mandatory, the rest are wrapped in $(...)? to make them optional
addr: $addr:expr
$(, state: $state:expr )?
$(, config: $config:expr )?
$(, configure_app: |$app:ident| $app_body:expr )?
$(, configure_server: |$server:ident| $server_body:expr )?
$(,)? // Handles an optional trailing comma at the very end of the macro call
) => { ... };
}