edon 0.0.27

Library embedding Nodejs (libnode) within Rust
Documentation
use std::ffi::c_char;
use std::ffi::c_int;
use std::ffi::CString;

pub fn start_blocking<Args: AsRef<str>>(argv: &[Args]) -> crate::Result<()> {
  let current_exe = CString::new(std::env::current_exe().unwrap().to_str().unwrap()).unwrap();

  let args = argv
    .iter()
    .map(|arg| CString::new(arg.as_ref()).unwrap())
    .collect::<Vec<CString>>();

  let mut final_args = vec![current_exe];
  final_args.extend(args);

  let c_args = final_args
    .iter()
    .map(|arg| arg.as_ptr())
    .collect::<Vec<*const c_char>>();

  unsafe { libnode_sys::node_embedding_main(c_args.len() as c_int, c_args.as_ptr()) };

  Ok(())
}