use hyperlight_host::{GuestBinary, MultiUseSandbox, UninitializedSandbox};
fn main() -> hyperlight_host::Result<()> {
let mut sandbox = UninitializedSandbox::new(
GuestBinary::FilePath("../guest/target/{arch}-hyperlight-none/debug/{guest_name}".into()),
None,
)?;
sandbox.register("GetWeekday", weekday)?;
let mut sandbox: MultiUseSandbox = sandbox.evolve()?;
let result: String = sandbox.call("SayHello", "World".to_string())?;
println!("{result}");
let sum: i32 = sandbox.call("Add", (2_i32, 3_i32))?;
println!("2 + 3 = {sum}");
let snapshot = sandbox.snapshot()?;
let count: i32 = sandbox.call("Increment", ())?;
println!("count = {count}"); let count: i32 = sandbox.call("Increment", ())?;
println!("count = {count}"); let count: i32 = sandbox.call("Increment", ())?;
println!("count = {count}");
sandbox.restore(snapshot)?;
let count: i32 = sandbox.call("Increment", ())?;
println!("count after restore = {count}");
Ok(())
}
fn weekday() -> hyperlight_host::Result<String> {
Ok("Monday".to_string())
}