jlrs 0.23.0

jlrs provides bindings to the Julia C API that enable Julia code to be called from Rust and more.
Documentation
mod util;
#[cfg(feature = "local-rt")]
mod tests {
    use jlrs::prelude::*;

    use super::util::JULIA;

    fn ptr_union_fields_access_something() {
        JULIA.with(|handle| {
            handle.borrow_mut().with_stack(|mut stack| {
                stack.scope(|frame| unsafe {
                    let field = Module::main(&frame)
                        .submodule(&frame, "JlrsTests")
                        .unwrap()
                        .as_managed()
                        .global(&frame, "has_module")
                        .unwrap()
                        .as_value()
                        .field_accessor()
                        .field("a")
                        .unwrap()
                        .access::<WeakValue>()
                        .unwrap();

                    assert!(field.as_value().is::<Module>());
                })
            })
        })
    }

    fn ptr_union_fields_nothing_is_not_null() {
        JULIA.with(|handle| {
            handle.borrow_mut().with_stack(|mut stack| {
                stack.scope(|frame| unsafe {
                    let _field = Module::main(&frame)
                        .submodule(&frame, "JlrsTests")
                        .unwrap()
                        .as_managed()
                        .global(&frame, "has_nothing")
                        .unwrap()
                        .as_value()
                        .field_accessor()
                        .field("a")
                        .unwrap()
                        .access::<Nothing>()
                        .unwrap();
                })
            })
        })
    }

    #[test]
    fn union_layout_tests() {
        ptr_union_fields_access_something();
        ptr_union_fields_nothing_is_not_null();
    }
}