Put context object behind a ref rather than mut ref

This commit puts context object, i.e., the implementor of the
WASI snapshot, behind a reference `&self` rather than a mutable
reference `&mut self`. As suggested by @alexcrichton, this gives
the implementor the possibility to determine how it handles its
interior mutability.
This commit is contained in:
Jakub Konka
2020-03-03 15:25:11 +01:00
committed by Jakub Konka
parent ea4d2d0535
commit 3764204250
13 changed files with 74 additions and 78 deletions

View File

@@ -91,16 +91,17 @@ mod test {
}
}
use std::cell::RefCell;
use wiggle_runtime::GuestError;
pub struct WasiCtx {
pub guest_errors: Vec<GuestError>,
pub guest_errors: RefCell<Vec<GuestError>>,
}
impl WasiCtx {
pub fn new() -> Self {
Self {
guest_errors: vec![],
guest_errors: RefCell::new(vec![]),
}
}
}
@@ -117,9 +118,9 @@ macro_rules! impl_errno {
fn success() -> $errno {
<$errno>::Ok
}
fn from_error(e: GuestError, ctx: &mut WasiCtx) -> $errno {
fn from_error(e: GuestError, ctx: &WasiCtx) -> $errno {
eprintln!("GUEST ERROR: {:?}", e);
ctx.guest_errors.push(e);
ctx.guest_errors.borrow_mut().push(e);
types::Errno::InvalidArg
}
}