eure_codegen/
config.rs

1//! Configuration for code generation.
2
3/// Visibility of generated types.
4#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
5pub enum Visibility {
6    /// Public visibility (`pub`).
7    #[default]
8    Pub,
9    /// Crate-level visibility (`pub(crate)`).
10    PubCrate,
11    /// Private visibility (no modifier).
12    Private,
13}
14
15/// Configuration for code generation.
16///
17/// Use the builder pattern to construct:
18/// ```ignore
19/// let config = GenerationConfig::builder()
20///     .serde_serialize(true)
21///     .serde_deserialize(true)
22///     .build();
23/// ```
24#[derive(Debug, Clone, bon::Builder)]
25pub struct GenerationConfig {
26    /// Generate `EureExtract` implementations.
27    #[builder(default = true)]
28    pub extract: bool,
29
30    /// Derive `serde::Serialize` for generated types.
31    #[builder(default = true)]
32    pub serde_serialize: bool,
33
34    /// Derive `serde::Deserialize` for generated types.
35    #[builder(default = true)]
36    pub serde_deserialize: bool,
37
38    /// Visibility of generated types.
39    #[builder(default)]
40    pub visibility: Visibility,
41
42    /// Add `#[allow(...)]` attributes to suppress warnings.
43    #[builder(default = true)]
44    pub allow_warnings: bool,
45}