yit_id_generator/
lib.rs

1mod idgen;
2
3//#[macro_use]
4// extern crate lazy_static;
5extern crate libc;
6
7//use std::ffi::{CStr, CString};
8//use std::str;
9pub use idgen::*;
10
11// #[export_name = "SetIdGenerator"]
12#[no_mangle]
13pub extern "C" fn SetIdGenerator(options: IdGeneratorOptions) {
14    YitIdHelper::SetIdGenerator(options);
15}
16
17#[no_mangle]
18pub extern "C" fn SetOptions(_worker_id: u32, worker_id_bit_length: u8, seq_bit_length: u8) {
19    let mut options = IdGeneratorOptions::New(1);
20    options.WorkerIdBitLength = worker_id_bit_length;
21    options.SeqBitLength = seq_bit_length;
22    YitIdHelper::SetIdGenerator(options);
23}
24
25#[no_mangle]
26pub extern "C" fn SetWorkerId(worker_id: u32) {
27    YitIdHelper::SetWorkerId(worker_id);
28}
29
30#[no_mangle]
31pub extern "C" fn NextId() -> i64 {
32    YitIdHelper::NextId()
33}
34
35// build-win-x64: cargo build --release
36// build-linux-x64: cargo build --target x86_64-unknown-linux-musl --release