Skip to content

Commit 1377814

Browse files
committed
Newtype Module/Instance
1 parent ae59572 commit 1377814

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

bindings/rust/src/lib.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,11 @@ pub fn validate<T: AsRef<[u8]>>(input: T) -> bool {
1414
}
1515

1616
/// A parsed and validated WebAssembly 1.0 module.
17-
pub struct Module {
18-
ptr: NonNull<sys::FizzyModule>,
19-
}
17+
pub struct Module(*const sys::FizzyModule);
2018

2119
impl Drop for Module {
2220
fn drop(&mut self) {
23-
unsafe { sys::fizzy_free_module(self.ptr.as_ptr()) }
21+
unsafe { sys::fizzy_free_module(self.0) }
2422
}
2523
}
2624

@@ -30,29 +28,28 @@ pub fn parse<T: AsRef<[u8]>>(input: &T) -> Result<Module, ()> {
3028
if ptr.is_null() {
3129
return Err(());
3230
}
33-
Ok(Module {
34-
ptr: unsafe { NonNull::new_unchecked(ptr as *mut sys::FizzyModule) },
35-
})
31+
Ok(Module { 0: ptr })
3632
}
3733

3834
/// An instance of a module.
39-
pub struct Instance {
40-
ptr: NonNull<sys::FizzyInstance>,
41-
}
35+
pub struct Instance(NonNull<sys::FizzyInstance>);
4236

4337
impl Drop for Instance {
4438
fn drop(&mut self) {
45-
unsafe { sys::fizzy_free_instance(self.ptr.as_ptr()) }
39+
unsafe { sys::fizzy_free_instance(self.0.as_ptr()) }
4640
}
4741
}
4842

4943
impl Module {
5044
/// Create an instance of a module.
5145
// TODO: support imported functions
5246
pub fn instantiate(self) -> Result<Instance, ()> {
47+
if self.0.is_null() {
48+
return Err(());
49+
}
5350
let ptr = unsafe {
5451
sys::fizzy_instantiate(
55-
self.ptr.as_ptr(),
52+
self.0,
5653
std::ptr::null(),
5754
0,
5855
std::ptr::null(),
@@ -67,7 +64,7 @@ impl Module {
6764
return Err(());
6865
}
6966
Ok(Instance {
70-
ptr: unsafe { NonNull::new_unchecked(ptr) },
67+
0: unsafe { NonNull::new_unchecked(ptr) },
7168
})
7269
}
7370
}
@@ -168,7 +165,7 @@ impl Instance {
168165
depth: i32,
169166
) -> ExecutionResult {
170167
ExecutionResult {
171-
0: sys::fizzy_execute(self.ptr.as_ptr(), func_idx, args.as_ptr(), depth),
168+
0: sys::fizzy_execute(self.0.as_ptr(), func_idx, args.as_ptr(), depth),
172169
}
173170
}
174171
}

0 commit comments

Comments
 (0)