mod idgen; #[macro_use] // extern crate lazy_static; extern crate libc; use libc::{c_char, uint32_t}; use std::ffi::{CStr, CString}; use std::str; pub use idgen::*; // #[export_name = "SetIdGenerator"] #[no_mangle] pub extern "C" fn SetIdGenerator(options: IdGeneratorOptions) { YitIdHelper::SetIdGenerator(options); } #[no_mangle] pub extern "C" fn SetOptions(workerId: u32, workerIdBitLength: u8, seqBitLength: u8) { let mut options = IdGeneratorOptions::New(1); options.WorkerIdBitLength = workerIdBitLength; options.SeqBitLength = seqBitLength; YitIdHelper::SetIdGenerator(options); } #[no_mangle] pub extern "C" fn SetWorkerId(workerId: u32) { YitIdHelper::SetWorkerId(workerId); } #[no_mangle] pub extern "C" fn NextId() -> i64 { YitIdHelper::NextId() } // build-win-x64: cargo build --release // build-linux-x64: cargo build --target x86_64-unknown-linux-musl --release