Skip to main content

func

Macro func 

Source
macro_rules! func {
    ($f:ident :: <$($gen:ty),*>, $fn_type:ty) => { ... };
    ($f:expr, $fn_type:ty) => { ... };
    (func_info: fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (func_info: fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (func_info: unsafe fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (unsafe{} fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (func_info: unsafe fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (unsafe{} fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (func_info: unsafe extern "C" fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (unsafe{} extern "C" fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (func_info: unsafe extern "C" fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (unsafe{} extern "C" fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (func_info: unsafe extern "system" fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (unsafe{} extern "system" fn ( $f:expr ) ( $($arg_ty:ty),* ) -> $ret:ty) => { ... };
    (func_info: unsafe extern "system" fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
    (unsafe{} extern "system" fn ( $f:expr ) ( $($arg_ty:ty),* )) => { ... };
}
Expand description

Converts a function to a FuncPtr.

This macro handles both generic and non-generic functions:

  • For generic functions, provide the function name and type parameters separately: func!(function_name, fn(Type1, Type2))
  • For non-generic functions, simply provide the function: func!(function_name, fn())