diff --git a/src/interpreter/module.rs b/src/interpreter/module.rs index be5dde6..ac68a93 100644 --- a/src/interpreter/module.rs +++ b/src/interpreter/module.rs @@ -70,7 +70,7 @@ impl ExternVal { } } -#[derive(Default, Debug)] +#[derive(Debug)] pub struct ModuleInstance { types: RefCell>>, tables: RefCell>>>, @@ -80,8 +80,8 @@ pub struct ModuleInstance { exports: RefCell>>, } -impl ModuleInstance { - fn new() -> ModuleInstance { +impl Default for ModuleInstance { + fn default() -> Self { ModuleInstance { types: RefCell::new(Vec::new()), tables: RefCell::new(Vec::new()), @@ -91,9 +91,11 @@ impl ModuleInstance { exports: RefCell::new(HashMap::new()), } } +} - pub fn with_exports(exports: HashMap>) -> ModuleInstance { - let mut instance = Self::new(); +impl ModuleInstance { + pub fn with_exports(exports: HashMap>) -> Self { + let mut instance = Self::default(); instance.exports = RefCell::new(exports); instance } @@ -310,7 +312,7 @@ impl ModuleInstance { module: &Module, extern_vals: &[ExternVal], ) -> Result>, Error> { - let instance = Rc::new(ModuleInstance::new()); + let instance = Rc::new(ModuleInstance::default()); ModuleInstance::alloc_module(module, extern_vals, &instance)?; @@ -393,8 +395,8 @@ impl ModuleInstance { Self::instantiate_with_externvals(module, &extern_vals) } - pub fn instantiate<'a>(module: &'a Module) -> InstantiationWizard<'a, St> { - InstantiationWizard::new(module) + pub fn new<'a>(module: &'a Module) -> InstantiationBuilder<'a, St> { + InstantiationBuilder::new(module) } pub fn invoke_index( @@ -437,14 +439,14 @@ impl ModuleInstance { } } -pub struct InstantiationWizard<'a, St: 'a> { +pub struct InstantiationBuilder<'a, St: 'a> { module: &'a Module, imports: Option>, } -impl<'a, St: 'a> InstantiationWizard<'a, St> { +impl<'a, St: 'a> InstantiationBuilder<'a, St> { fn new(module: &'a Module) -> Self { - InstantiationWizard { + InstantiationBuilder { module, imports: None, } diff --git a/src/interpreter/program.rs b/src/interpreter/program.rs index 8185a25..84d06d6 100644 --- a/src/interpreter/program.rs +++ b/src/interpreter/program.rs @@ -38,7 +38,7 @@ impl ProgramInstance { for (module_name, import_resolver) in self.resolvers.iter() { imports.push_resolver(&**module_name, &**import_resolver); } - ModuleInstance::instantiate(&module) + ModuleInstance::new(&module) .with_imports(imports) .run_start(state)? }; diff --git a/src/interpreter/tests/basics.rs b/src/interpreter/tests/basics.rs index 8de6c95..5dcb074 100644 --- a/src/interpreter/tests/basics.rs +++ b/src/interpreter/tests/basics.rs @@ -37,10 +37,10 @@ fn import_function() { .build() .build(); - let external_module = ModuleInstance::instantiate(&module1) + let external_module = ModuleInstance::new(&module1) .assert_no_start() .unwrap(); - let main_module = ModuleInstance::instantiate(&module2) + let main_module = ModuleInstance::new(&module2) .with_import("external_module", &*external_module) .assert_no_start() .unwrap(); @@ -340,7 +340,7 @@ fn native_ref_state() { ext_state: RefCell::new(&mut ext_state), }; - let instance = ModuleInstance::instantiate(&main_module) + let instance = ModuleInstance::new(&main_module) .with_import("env", &host_module) .assert_no_start() .expect("Instantiate module successfully");