macro_rules! callback { ($($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? || $b:block) => { ... }; ($($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? |$($a:ident :$t:ty),+| $b:block) => { ... }; ($($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? || -> $r:ty $b:block) => { ... }; ($($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? |$($a:ident :$t:ty),+| -> $r:ty $b:block) => { ... }; (@with_return $($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? || $b:block) => { ... }; (@with_return $($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? |$($a:ident :$t:ty),+| $b:block) => { ... }; (@with_return $($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? || -> $r:ty $b:block) => { ... }; (@with_return $($(krpc::)?clone!($($var:ident),*),)? $(async)? $(move)? |$($a:ident :$t:ty),+| -> $r:ty $b:block) => { ... }; }
Expand description
用以声明回调函数,主要用于服务端绑定lambda函数(支持同步和异步)
支持如下格式:
- 前缀
krpc::clone!(a,...)asyncmove都是可选的,如果lambda函数中使用的变量需要在函数体外被使用,需用clone!标注这些变量,例如clone!(tx,var) - ||{…},无参数也无返回值
- |id:i32|{…},有参数无返回值
- ||->String {…},无参数有返回值
- |id:i32,s:String|->String {…},有参数且有返回值