use super::Env;
use crate::no_std::RawEnv;
extern "C" {
pub fn __rune_env_get() -> RawEnv;
pub fn __rune_env_replace(vm: RawEnv) -> RawEnv;
}
pub(super) fn rune_env_get() -> Env {
unsafe { from_raw_env(__rune_env_get()) }
}
pub(super) fn rune_env_replace(env: Env) -> Env {
unsafe { from_raw_env(__rune_env_replace(from_env(env))) }
}
unsafe fn from_env(env: Env) -> RawEnv {
RawEnv {
context: env.context.map(|ptr| ptr.cast()),
unit: env.unit.map(|ptr| ptr.cast()),
diagnostics: env.diagnostics.map(|ptr| ptr.cast()),
}
}
unsafe fn from_raw_env(env: RawEnv) -> Env {
Env {
context: env.context.map(|ptr| ptr.cast()),
unit: env.unit.map(|ptr| ptr.cast()),
diagnostics: env.diagnostics.map(|ptr| ptr.cast()),
}
}