133d722a9Sopenharmony_ci{{#title Function pointers — Rust ♡ C++}} 233d722a9Sopenharmony_ci# Function pointers 333d722a9Sopenharmony_ci 433d722a9Sopenharmony_ci### Public API: 533d722a9Sopenharmony_ci 633d722a9Sopenharmony_ci```cpp,hidelines 733d722a9Sopenharmony_ci// rust/cxx.h 833d722a9Sopenharmony_ci# 933d722a9Sopenharmony_ci# namespace rust { 1033d722a9Sopenharmony_ci 1133d722a9Sopenharmony_citemplate <typename Signature> 1233d722a9Sopenharmony_ciclass Fn; 1333d722a9Sopenharmony_ci 1433d722a9Sopenharmony_citemplate <typename Ret, typename... Args> 1533d722a9Sopenharmony_ciclass Fn<Ret(Args...)> final { 1633d722a9Sopenharmony_cipublic: 1733d722a9Sopenharmony_ci Ret operator()(Args... args) const noexcept; 1833d722a9Sopenharmony_ci Fn operator*() const noexcept; 1933d722a9Sopenharmony_ci}; 2033d722a9Sopenharmony_ci# 2133d722a9Sopenharmony_ci# } // namespace rust 2233d722a9Sopenharmony_ci``` 2333d722a9Sopenharmony_ci 2433d722a9Sopenharmony_ci### Restrictions: 2533d722a9Sopenharmony_ci 2633d722a9Sopenharmony_ciFunction pointers with a Result return type are not implemented yet. 2733d722a9Sopenharmony_ci 2833d722a9Sopenharmony_ciPassing a function pointer from C++ to Rust is not implemented yet, only from 2933d722a9Sopenharmony_ciRust to an `extern "C++"` function is implemented. 3033d722a9Sopenharmony_ci 3133d722a9Sopenharmony_ci## Example 3233d722a9Sopenharmony_ci 3333d722a9Sopenharmony_ciFunction pointers are commonly useful for implementing [async functions over 3433d722a9Sopenharmony_ciFFI](../async.md). See the example code on that page. 35