revive_solc_json_interface/standard_json/input/settings/optimizer/
mod.rs1pub mod details;
4
5use serde::Deserialize;
6use serde::Serialize;
7
8use self::details::Details;
9
10#[derive(Clone, Debug, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase")]
13pub struct Optimizer {
14 pub enabled: bool,
16 #[serde(skip_serializing)]
18 pub mode: Option<char>,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub details: Option<Details>,
22 #[serde(skip_serializing)]
24 pub fallback_to_optimizing_for_size: Option<bool>,
25}
26
27impl Optimizer {
28 pub fn new(
30 enabled: bool,
31 mode: Option<char>,
32 version: &semver::Version,
33 fallback_to_optimizing_for_size: bool,
34 ) -> Self {
35 Self {
36 enabled,
37 mode,
38 details: Some(Details::disabled(version)),
39 fallback_to_optimizing_for_size: Some(fallback_to_optimizing_for_size),
40 }
41 }
42
43 pub fn normalize(&mut self, version: &semver::Version) {
45 self.details = if version >= &semver::Version::new(0, 5, 5) {
46 Some(Details::disabled(version))
47 } else {
48 None
49 };
50 }
51}