Skip to main content

ferrin_core/
ids.rs

1//! Identifier generation for calls and approvals.
2
3use std::sync::Arc;
4
5pub use ferrin_provider_util::IdGenerator;
6pub use ferrin_provider_util::PrefixedIdGenerator;
7
8/// The default generator: 16 alphanumeric characters, no prefix.
9#[derive(Debug, Clone, Copy, Default)]
10pub struct DefaultIdGenerator;
11
12impl IdGenerator for DefaultIdGenerator {
13    fn generate(&self) -> String {
14        ferrin_provider_util::ids::generate_id()
15    }
16}
17
18/// Returns the default generator as a shared trait object.
19#[must_use]
20pub fn default_id_generator() -> Arc<dyn IdGenerator> {
21    Arc::new(DefaultIdGenerator)
22}