revive_solc_json_interface/standard_json/input/settings/optimizer/
mod.rs

1//! The `solc --standard-json` input settings optimizer.
2
3pub mod details;
4pub mod yul_details;
5
6use serde::Deserialize;
7use serde::Serialize;
8
9use self::details::Details;
10
11/// The `solc --standard-json` input settings optimizer.
12#[derive(Clone, Debug, Serialize, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct Optimizer {
15    /// Whether the optimizer is enabled.
16    pub enabled: bool,
17    /// The optimization mode string.
18    #[serde(default = "Optimizer::default_mode", skip_serializing)]
19    pub mode: char,
20    /// The `solc` optimizer details.
21    #[serde(default)]
22    pub details: Details,
23}
24
25impl Optimizer {
26    /// A shortcut constructor.
27    pub fn new(enabled: bool, mode: char, details: Details) -> Self {
28        Self {
29            enabled,
30            mode,
31            details,
32        }
33    }
34
35    /// The default optimization mode.
36    pub fn default_mode() -> char {
37        'z'
38    }
39}
40
41impl Default for Optimizer {
42    fn default() -> Self {
43        Self::new(true, Self::default_mode(), Details::default())
44    }
45}