use cljrs_value::Value;
use crate::env::env::Env;
use crate::env::error::EvalResult;
pub trait AsyncRuntime: Send + Sync {
fn spawn_async_call(&self, callee: Value, args: Vec<Value>, env: Env) -> Value;
fn spawn_fiber_call(&self, callee: Value, args: Vec<Value>, env: Env) -> EvalResult {
Ok(self.spawn_async_call(callee, args, env))
}
fn take_if_channel(&self, val: &Value) -> Option<EvalResult> {
let _ = val;
None
}
fn chan_take_blocking(&self, chan: Value) -> EvalResult;
fn chan_put_blocking(&self, chan: Value, val: Value) -> EvalResult<()>;
}