proc_macro_assertions/ident_generator/
mod.rs1#[cfg(feature = "uuid_ident_gen")]
2mod uuid;
3
4#[cfg(feature = "uuid_ident_gen")]
5pub use self::uuid::UUIDIdentGenerator;
6
7#[cfg(any(test, feature = "mock_ident_gen"))]
8mod mock;
9
10#[cfg(any(test, feature = "mock_ident_gen"))]
11#[allow(clippy::module_name_repetitions)]
12pub use mock::MockIdentGenerator;
13
14mod counting;
15#[allow(clippy::module_name_repetitions)]
16pub use counting::CountingIdentGenerator;
17
18use proc_macro2::Span;
19use syn::Ident;
20
21pub trait IdentGenerator {
24 #[must_use]
26 fn prefixed(&mut self, prefix: &'static str) -> Ident {
27 self.generate(Some(prefix), Span::call_site())
28 }
29
30 #[must_use]
32 fn ident(&mut self) -> Ident {
33 self.generate(None, Span::call_site())
34 }
35
36 #[must_use]
38 fn spanned(&mut self, span: Span) -> Ident {
39 self.generate(None, span)
40 }
41
42 #[must_use]
44 fn generate(&mut self, prefix: Option<&'static str>, span: Span) -> Ident;
45}