Skip to content

Commit 515ede6

Browse files
fix: resource impl (#242)
Signed-off-by: Fabrizio Sestito <[email protected]>
1 parent e17dabb commit 515ede6

File tree

4 files changed

+14
-16
lines changed

4 files changed

+14
-16
lines changed

native/rhai_rustler/src/ast.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
use std::sync::Mutex;
22

33
use rhai::AST;
4-
use rustler::ResourceArc;
4+
use rustler::{Resource, ResourceArc};
55

66
pub struct ASTResource {
77
pub ast: Mutex<AST>,
88
}
99

10+
#[rustler::resource_impl]
11+
impl Resource for ASTResource {}
12+
1013
#[rustler::nif]
1114
fn ast_empty() -> ResourceArc<ASTResource> {
1215
ResourceArc::new(ASTResource {

native/rhai_rustler/src/engine.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use rhai::{
99
use rhai_dylib::loader::{libloading::Libloading, Loader};
1010
use rhai_dylib::module_resolvers::libloading::DylibModuleResolver;
1111

12-
use rustler::{Env, NifUnitEnum, ResourceArc, Term};
12+
use rustler::{Env, NifUnitEnum, Resource, ResourceArc, Term};
1313

1414
use crate::{
1515
ast::ASTResource,
@@ -29,6 +29,9 @@ pub struct EngineResource {
2929
pub engine: Mutex<Engine>,
3030
}
3131

32+
#[rustler::resource_impl]
33+
impl Resource for EngineResource {}
34+
3235
#[rustler::nif]
3336
fn engine_new() -> ResourceArc<EngineResource> {
3437
let engine = Engine::new();

native/rhai_rustler/src/lib.rs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ mod types;
77
use rhai::config::hashing::set_hashing_seed;
88
use rustler::{Env, Term};
99

10-
use crate::ast::*;
11-
use crate::engine::*;
12-
use crate::scope::*;
13-
14-
fn load(env: Env, _: Term) -> bool {
10+
fn load(_: Env, _: Term) -> bool {
1511
// Set dylib ahash seed
1612
if let Err(value) = set_hashing_seed(Some([1, 3, 3, 7])) {
1713
eprintln!(
@@ -21,14 +17,7 @@ fn load(env: Env, _: Term) -> bool {
2117
return false;
2218
}
2319

24-
let resources = [
25-
rustler::resource!(EngineResource, env),
26-
rustler::resource!(ScopeResource, env),
27-
rustler::resource!(ASTResource, env),
28-
];
29-
30-
// If any resource was not loaded correctly, return false
31-
!resources.into_iter().any(|resource| !resource)
20+
true
3221
}
3322

3423
rustler::init!("Elixir.Rhai.Native", load = load);

native/rhai_rustler/src/scope.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Mutex;
22

33
use rhai::Scope;
4-
use rustler::{Encoder, Env, ResourceArc, Term};
4+
use rustler::{Encoder, Env, Resource, ResourceArc, Term};
55

66
use crate::{
77
error::{RhaiRustlerError, ScopeError},
@@ -12,6 +12,9 @@ pub struct ScopeResource {
1212
pub scope: Mutex<Scope<'static>>,
1313
}
1414

15+
#[rustler::resource_impl]
16+
impl Resource for ScopeResource {}
17+
1518
#[rustler::nif]
1619
fn scope_new() -> ResourceArc<ScopeResource> {
1720
ResourceArc::new(ScopeResource {

0 commit comments

Comments
 (0)