nanos-sdk-rs 0.2.0

nanos-world module SDK bindings for Rust
Documentation
use std::path::PathBuf;

#[derive(Debug)]
enum SdkGeneratorError {
	OutDirNotFound,
	BindgenFailure,
	WriteFailure( std::io::Error )
}

fn main() -> Result<(), SdkGeneratorError> {
	use SdkGeneratorError::*;

	let out_dir = PathBuf::from( std::env::var("OUT_DIR").map_err( |_| OutDirNotFound )? );

	let bindings = bindgen::Builder::default()
		.header("module-sdk/include/lua.hpp")
		.allowlist_function("(LUA|lua).*")
		.allowlist_type("(LUA|lua).*")
		.allowlist_var("(LUA|lua).*")
		.generate()
		.map_err(|_| BindgenFailure)?;

	bindings
		.write_to_file(out_dir.join("bindings.rs"))
		.map_err(WriteFailure)?;

	println!( "cargo:rustc-link-search=native=module-sdk/lib" );
	println!( "cargo:rustc-link-lib=static=lua" );

	Ok(())
}