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) => { ... };
}
Expand description
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(),
})
}