}
}
-impl From<ByteArray> for ArgValue<'static> {
- fn from(val: ByteArray) -> ArgValue<'static> {
- // TODO(@jroesch): brorowed ArgValue are not sound
- ArgValue::Bytes(unsafe { std::mem::transmute(&val.array) })
+impl<'a> From<&'a ByteArray> for ArgValue<'a> {
+ fn from(val: &'a ByteArray) -> ArgValue<'a> {
+ ArgValue::Bytes(&val.array)
}
}
},
match &self {
Bytes(val) => {
- (TVMValue { v_handle: val as *const _ as *mut c_void }, TVMArgTypeCode_kTVMBytes)
+ (TVMValue { v_handle: *val as *const _ as *mut c_void }, TVMArgTypeCode_kTVMBytes)
}
Str(val) => { (TVMValue { v_handle: val.as_ptr() as *mut c_void }, TVMArgTypeCode_kTVMStr) }
}
fs::read(concat!(env!("CARGO_MANIFEST_DIR"), "/deploy_param.params")).unwrap();
let barr = ByteArray::from(¶ms);
// load the parameters
- load_param_fn.invoke(vec![barr.into()]).unwrap();
+ load_param_fn.invoke(vec![(&barr).into()]).unwrap();
// get the set_input function
let ref set_input_fn = graph_runtime_module
.get_function("set_input", false)