1
0
Fork 0
mirror of synced 2025-09-23 12:18:44 +00:00

Remove dependency on std::fs::File

This commit is contained in:
Guillaume Ballet 2018-12-26 13:09:56 +01:00
parent ebdfd96bda
commit 2113e1f588
2 changed files with 7 additions and 15 deletions

View file

@ -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<Vec<u8>> for WasmHelper {
fn from(code: Vec<u8>) -> Self {
let module = wasmi::Module::from_buffer(code.clone()).expect("Error decoding buffer");
impl<U: Into<Vec<u8>>> From<U> 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)
}
}

View file

@ -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;