#nif #erlang #elixir #rustler #data-structures

rustler_stored_term

在您的NIFs(本地实现函数)中存储任意Elixir/Erlang项,以便在多个NIF调用之间持久化

1个不稳定版本

0.1.0 2022年5月26日

#11#nif


rustler_elixir_fun 中使用

MIT 许可证

9KB
118 代码行

rustler_stored_term

当您使用Rust实现Elixir/Erlang的NIF(本地实现函数)时,您可能会遇到需要在多个NIF调用之间持久化Elixir/Erlang项的情况。

例如,您可能希望将它们存储在向量或某些其他集合中,以便稍后使用。

然而,在一般情况下,这并不容易做到:如果您确定传递给NIF的项是例如一个小整数或字符串,您可以将其转换为该特定数据类型。但是,许多数据类型(函数、引用、端口、大整数等)在Rust端根本无法安全转换。并且传递给任何单个NIF调用的项的生存期限制为该特定调用。

此库通过将它们转换为稳定格式来允许它们更长时间地保留。'已知'数据类型被转换为简单的Rust等效类型,其余的则通过将项复制到Rustler OwnedEnv(参见图 TermBox)来处理。

TermStoredTerm 之间的转换非常简单,因为它实现了Rustler的 Encoder/Decoder 特性。

依赖关系

~265–580KB
~11K SLoC