Expand description
Rustler is a library for writing Erlang NIFs in safe Rust code. That means there should be no ways to crash the BEAM (Erlang VM). The library provides facilities for generating the boilerplate for interacting with the BEAM, handles encoding and decoding of Erlang terms, and catches rust panics before they unwind into C.
The library provides functionality for both Erlang and Elixir, however Elixir is favored as of now.
This crate provides the entire runtime library for rustler. Code generators are located in the rustler_codegen library.
Getting Started
There is a :rustler
package on hex.pm that provides
functionality which makes working with Rustler easier, including project generators, an
automatic NIF compiler for Mix, and utilities for loading the compiled NIF.
For more information about this, see the documentation for rustler.
Re-exports
pub use lazy_static;
pub use crate::types::Atom;
pub use crate::types::Binary;
pub use crate::types::Decoder;
pub use crate::types::Encoder;
pub use crate::types::NewBinary;
pub use crate::types::OwnedBinary;
pub use crate::resource::ResourceArc;
pub use crate::schedule::SchedulerFlags;
pub use crate::env::Env;
pub use crate::env::OwnedEnv;
pub use crate::thread::spawn;
pub use crate::thread::JobSpawner;
pub use crate::thread::ThreadSpawner;
pub use crate::error::Error;
pub use crate::return::Return;
Modules
Macros
lazy_static
crate.Structs
Enums
Traits
Type Definitions
Attribute Macros
Derive Macros
Encoder
and Decoder
traits
which convert between an Elixir exception and a Rust struct.Encoder
and Decoder
traits
which convert between Rust struct and an Elixir map.Encoder
and Decoder
traits
which convert between a Rust struct and an Elixir record.Encoder
and Decoder
traits
which convert between an Elixir struct and a Rust struct.NifTaggedEnum
macro that lets the user annotate an enum that will
generate elixir values when encoded. This can be used for any rust enums and will generate
three types of values based on the kind of the enum. For example from the test code:Encoder
and Decoder
traits
which convert between a Rust struct and an Elixir tuple.Encoder
and Decoder
traits
which convert between an enum and a union of elixir atoms.Encoder
and Decoder
traits
which convert between a Rust enum and a union of Elixir types.