ducc 0.1.5

Rust bindings for Duktape, the embedded JavaScript engine
Documentation
use ducc::Ducc;
use error::Result;
use ffi;
use std::any::Any;
use std::collections::BTreeMap;
use std::fmt;
use value::{Value, Values};

pub(crate) struct Ref<'ducc> {
    pub ducc: &'ducc Ducc,
    pub stash_key: ffi::duk_uarridx_t,
}

impl<'ducc> fmt::Debug for Ref<'ducc> {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Ref({})", self.stash_key)
    }
}

impl<'ducc> Clone for Ref<'ducc> {
    fn clone(&self) -> Self {
        unsafe { self.ducc.clone_ref(self) }
    }
}

impl<'ducc> Drop for Ref<'ducc> {
    fn drop(&mut self) {
        unsafe { self.ducc.drop_ref(self); }
    }
}

pub(crate) type Callback<'ducc, 'a> =
    Box<dyn Fn(&'ducc Ducc, Value<'ducc>, Values<'ducc>) -> Result<Value<'ducc>> + 'a>;

pub(crate) type AnyMap = BTreeMap<String, Box<dyn Any + 'static>>;