Macro custom_print::define_writer_expr [−][src]
macro_rules! define_writer_expr { ( unsafe fn $func:ident($ty1:ty) $( -> $ret:ty)? ) => { ... }; ( unsafe fn ($func:path)($ty1:ty) $( -> $ret:ty)? ) => { ... }; ( unsafe fn $func:ident($ty1:ty, $ty2:ty) $( -> $ret:ty)? ) => { ... }; ( unsafe fn ($func:path)($ty1:ty, $ty2:ty) $( -> $ret:ty)? ) => { ... }; ( $(#[$extern_meta:meta])* extern $($abi:literal)? $(#[$meta:meta])* fn $func:ident($arg1:tt: $ty1:ty) $( -> $ret:ty)? ) => { ... }; ( $(#[$extern_meta:meta])* extern $($abi:literal)? $(#[$meta:meta])* fn $func:ident($arg1:tt: $ty1:ty, $arg2:tt: $ty2:ty) $( -> $ret:ty)? ) => { ... }; ( $expr:expr ) => { ... }; }
Expand description
Defines a writer expression from another expression, unsafe function or extern function.
If unsafe function specified as argument
it just creates an FnMut
wrapper that calls unsafe fn in unsafe block.
The function can be specified by identifier or by braced full path.
See Sefety section for important details about safety.
If extern function specified as argument
it creates extern block with this function and
creates an FnMut
wrapper that calls unsafe fn in unsafe block.
See Sefety section for important details about safety.
If an expression given as argument, the macro just returns it as a result.
This macro is used by define_writer
, define_try_writer
macros.
Safety
Note that writing using writer expression
defined with unsafe fn
or extern
fn` do not require unsafe,
so defining writer expression itself should be treated as an unsafe operation.