diff --git a/zokrates_core/src/helpers/wasm.rs b/zokrates_core/src/helpers/wasm.rs index b2ac16e0..a5ce810b 100644 --- a/zokrates_core/src/helpers/wasm.rs +++ b/zokrates_core/src/helpers/wasm.rs @@ -1,4 +1,3 @@ -use field::Field; use helpers::{Executable, Signed}; use std::fmt; @@ -6,6 +5,7 @@ use rustc_hex::FromHex; use serde::{Deserialize, Deserializer}; use std::rc::Rc; use wasmi::{ImportsBuilder, ModuleInstance, ModuleRef, NopExternals}; +use zokrates_field::field::Field; #[derive(Clone, Debug, Serialize)] pub struct WasmHelper( @@ -27,22 +27,14 @@ impl WasmHelper { } } -impl From> for WasmHelper { - fn from(code: Vec) -> Self { - let module = wasmi::Module::from_buffer(code.clone()).expect("Error decoding buffer"); +impl>> From for WasmHelper { + fn from(code: U) -> Self { + let code_vec = code.into(); + let module = wasmi::Module::from_buffer(code_vec.clone()).expect("Error decoding buffer"); let modinst = ModuleInstance::new(&module, &ImportsBuilder::default()) .expect("Failed to instantiate module") .assert_no_start(); - WasmHelper(Rc::new(modinst), code) - } -} - -impl From<&mut std::fs::File> for WasmHelper { - fn from(file: &mut std::fs::File) -> Self { - use std::io::prelude::*; - let mut buf = Vec::new(); - file.read_to_end(&mut buf).unwrap(); - WasmHelper::from(buf) + WasmHelper(Rc::new(modinst), code_vec) } } diff --git a/zokrates_core/src/lib.rs b/zokrates_core/src/lib.rs index 38dccd48..e5b6f560 100644 --- a/zokrates_core/src/lib.rs +++ b/zokrates_core/src/lib.rs @@ -11,9 +11,9 @@ extern crate bimap; extern crate bincode; extern crate parity_wasm; extern crate regex; -extern crate wasmi; extern crate rustc_hex; extern crate serde_bytes; +extern crate wasmi; extern crate zokrates_field; mod flatten;