use smol_str::SmolStr; use std::sync::atomic::{AtomicU64, Ordering}; #[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)] pub struct PluginId(pub SmolStr); impl From<&str> for PluginId { fn from(s: &str) -> Self { Self(s.into()) } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)] pub struct RequestId(pub u64); impl RequestId { pub fn next() -> Self { static C: AtomicU64 = AtomicU64::new(1); Self(C.fetch_add(1, Ordering::Relaxed)) } }