use eryx::Sandbox;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
println!("=== Example 1: capturing a structured result ===");
let sandbox = Sandbox::embedded().build()?;
let out = sandbox
.execute(
r#"
items = [n * n for n in range(5)]
result = {"squares": items, "total": sum(items)}
"#,
)
.await?;
let json = out
.result
.as_deref()
.ok_or_else(|| anyhow::anyhow!("script did not set `result`"))?;
let value: serde_json::Value = serde_json::from_str(json)?;
println!("result.total = {}", value["total"]);
println!("raw JSON = {json}");
println!();
println!("=== Example 2: non-serializable result ===");
let out = sandbox.execute("result = object()").await?;
println!("result = {:?}", out.result);
println!("result_error = {:?}", out.result_error);
println!();
println!("=== Example 3: custom result variable name ===");
let sandbox = Sandbox::embedded().with_result_variable("answer").build()?;
let out = sandbox.execute("answer = 42\nresult = 'ignored'").await?;
println!("captured `answer` = {:?}", out.result.as_deref());
Ok(())
}