1个不稳定版本
0.1.0 | 2022年5月26日 |
---|
#11 在 #nif
在 rustler_elixir_fun 中使用
9KB
118 代码行
rustler_stored_term
当您使用Rust实现Elixir/Erlang的NIF(本地实现函数)时,您可能会遇到需要在多个NIF调用之间持久化Elixir/Erlang项的情况。
例如,您可能希望将它们存储在向量或某些其他集合中,以便稍后使用。
然而,在一般情况下,这并不容易做到:如果您确定传递给NIF的项是例如一个小整数或字符串,您可以将其转换为该特定数据类型。但是,许多数据类型(函数、引用、端口、大整数等)在Rust端根本无法安全转换。并且传递给任何单个NIF调用的项的生存期限制为该特定调用。
此库通过将它们转换为稳定格式来允许它们更长时间地保留。'已知'数据类型被转换为简单的Rust等效类型,其余的则通过将项复制到Rustler OwnedEnv
(参见图 TermBox
)来处理。
Term
和 StoredTerm
之间的转换非常简单,因为它实现了Rustler的 Encoder/Decoder
特性。
依赖关系
~265–580KB
~11K SLoC