[][src]Macro async_coap::write_options

macro_rules! write_options {
    (($msg:expr, $socket_addr:expr, $start:expr, $end:expr, $inner:expr) { $($key:expr => $viter:expr),* }) => { ... };
    (($msg:expr, $socket_addr:expr, $start:expr, $end:expr) { $($key:expr => $viter:expr),* }) => { ... };
    (($msg:ident, $socket_addr:ident, $start:ident, $end:ident, $inner:expr) { $($key:expr => $viter:expr),* ,}) => { ... };
    (($msg:ident, $socket_addr:ident, $start:ident, $end:ident) { $($key:expr => $viter:expr),* ,}) => { ... };
    ( _internal $key:expr, $viter:expr, $start:ident, $end:ident, $msg:ident, $socket_addr:ident, $inner:expr) => { ... };
    ( _internal $key:expr, $viter:expr, $start:ident, $end:ident, $msg:ident, $socket_addr:ident) => { ... };
}

Helper macro that assists with writing correct implementations of SendDesc::write_options.

Example

fn write_options(
    &self,
    msg: &mut dyn OptionInsert,
    socket_addr: &IC::SocketAddr,
    start: Bound<OptionNumber>,
    end: Bound<OptionNumber>,
) -> Result<(), Error> {
    write_options!((msg, socket_addr, start, end) {
        // Note that the options **MUST** be listed **in numerical order**,
        // otherwise the behavior will be undefined!
        URI_HOST => Some("example.com").into_iter(),
        URI_PORT => Some(1234).into_iter(),
        URI_PATH => vec!["a","b","c"].into_iter(),
    })
}