#[cfg(feature = "uuid_ident_gen")]
mod uuid;
#[cfg(feature = "uuid_ident_gen")]
pub use self::uuid::UUIDIdentGenerator;
#[cfg(any(test, feature = "mock_ident_gen"))]
mod mock;
#[cfg(any(test, feature = "mock_ident_gen"))]
pub use mock::MockIdentGenerator;
mod counting;
pub use counting::CountingIdentGenerator;
use proc_macro2::Span;
use syn::Ident;
pub trait IdentGenerator {
#[must_use]
fn prefixed(&mut self, prefix: &'static str) -> Ident {
self.generate(Some(prefix), Span::call_site())
}
#[must_use]
fn ident(&mut self) -> Ident {
self.generate(None, Span::call_site())
}
#[must_use]
fn spanned(&mut self, span: Span) -> Ident {
self.generate(None, span)
}
#[must_use]
fn generate(&mut self, prefix: Option<&'static str>, span: Span) -> Ident;
}