1use serde::Serialize;
5use std::sync::atomic::{AtomicU32, Ordering};
6
7#[cfg(feature = "typescript")]
8use ts_rs::TS;
9
10static REQUEST_ID: AtomicU32 = AtomicU32::new(1);
11
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize)]
14#[cfg_attr(feature = "typescript", derive(TS))]
15#[cfg_attr(feature = "typescript", ts(export))]
16#[cfg_attr(feature = "typescript", ts(rename = "ffi_RequestId"))]
17pub struct RequestId(u32);
18
19pub(crate) fn next_request_id() -> RequestId {
20 RequestId(REQUEST_ID.fetch_add(1, Ordering::Relaxed))
21}