#elixir #nif #erlang #rustler #function-application

rustler_elixir_fun

从Rust实现的NIF中调用Elixir函数

4个版本 (2个重大更改)

0.3.0 2022年5月27日
0.2.0 2022年5月27日
0.1.1 2022年5月26日
0.1.0 2022年5月26日

#7 in #nif

MIT 许可证

20KB
239 代码行

rustler_elixir_fun

是否曾想在Rust代码中调用Elixir函数?现在你可以了!

此包暴露了Rust代码,以便从Rust代码端进行交互。

有关详细信息,请参阅主GitHub仓库

安装

  • 将其添加为你的Cargo.toml依赖项。
  • 将同名Elixir库添加到你的mix.exs

使用方法

要调用的主要函数是apply_elixir_fun

let some_result : Result<Term, Error> = rustler_elixir_fun::apply_elixir_fun(env, pid_or_process_name, fun, parameters)

此函数将尝试使用Elixir侧的parameters调用fun,并阻塞调用者,直到有结果可用。

  • 请确保将调用此函数的任何NIF注册为“脏CPU NIF”!(通过在NIF上使用#[rustler::nif)]进行注释)。这有两个原因
    1. 从Elixir返回可能确实需要相当长的时间。
    2. 我们想要防止调度器等待自己,否则有时可能会发生这种情况。

依赖项

~265–580KB
~11K SLoC