openai_api_dispatch/
utils.rs1#[cfg(all(target_has_atomic = "32", not(feature = "std")))]
2pub fn id() -> u128 {
7 use core::sync::atomic::{AtomicU32, Ordering};
8
9 static ID_A: AtomicU32 = AtomicU32::new(0);
10 static ID_B: AtomicU32 = AtomicU32::new(0);
11
12 let a = ID_A.fetch_add(1, Ordering::SeqCst);
15 let b = if a == u32::MAX {
16 ID_B.fetch_add(1, Ordering::SeqCst)
17 } else {
18 ID_B.load(Ordering::SeqCst)
19 };
20
21 a as u128 + b as u128
22}
23
24#[cfg(feature = "std")]
25pub fn id() -> u128 {
27 uuid::Uuid::now_v7().as_u128()
28}
29
30#[cfg(all(not(target_has_atomic = "32"), not(feature = "std")))]
31compile_error!(
32 "atomic sync for u32 not supported; std not enabled; no fallback implementation for `id`"
33);
34
35#[cfg(feature = "std")]
36pub fn get_default_model() -> std::sync::Arc<Option<String>> {
41 let default_model = std::env::var("OPENAI_API_DEFAULT_MODEL").ok();
42 std::sync::Arc::new(default_model)
43}
44
45#[test]
46fn id_increments() {
47 let a = (0..1_000).map(|_| id());
48 let b = (0..1_000).map(|_| id());
49
50 a.zip(b).for_each(|(a, b)| assert!(a < b));
51}