
#[derive(Clone, Debug, PartialEq)]
pub struct Person {
name: Option<String>,
pub url: String,
}
# 必须实现 Runnable
impl Runnable for Person {
fn run(&mut self) -> Result<(), Box<dyn Any>> {
println!("I am a person, getting my name!");
let name_response: Result<String, SomeNetworkError> = remote_request_that_might_fail(self.url);
match name_response {
Ok(name) => {
println!("Got a name! {}", name);
self.name = Some(name);
}
Err(_) => return Err(
Box::new(
PersonError::as_any(&PersonError::NameFindingError)
)
)
}
Ok(())
}
fn update(&mut self, other: &Box<dyn FallbackAble>) {
let n: &Person = other.as_any().downcast_ref().unwrap();
self.url = n.url;
}
}

$ cargo run -p app -- -i fixtures/linux.bin -d fixtures/default.dtb
$ cargo build -p wasi --target wasm32-wasi --release
$ wasmtime ./target/wasm32-wasi/release/wasi.wasm
$ cd wasm
$ cargo build --target wasm32-unknown-unknown --release
$ wasm-opt --asyncify --pass-arg=asyncify-imports@env.keydown ../target/wasm32-unknown-unknown/release/wasm.wasm -o out.wasm
$ npx serve
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。