Macro krpc::callback

source ·
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,...) async move都是可选的,如果lambda函数中使用的变量需要在函数体外被使用,需用clone!标注这些变量,例如clone!(tx,var)
  • ||{…},无参数也无返回值
  • |id:i32|{…},有参数无返回值
  • ||->String {…},无参数有返回值
  • |id:i32,s:String|->String {…},有参数且有返回值