#[cfg(std_io)]
use super::cache::CacheConfig;
use super::logger::{LogLevel, LoggerConfig};
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CompilationConfig {
#[serde(default)]
pub logger: LoggerConfig<CompilationLogLevel>,
#[serde(default)]
#[cfg(std_io)]
pub cache: Option<CacheConfig>,
#[serde(default)]
pub check_mode: BoundsCheckMode,
}
#[derive(Default, Clone, Copy, Debug, serde::Serialize, serde::Deserialize)]
pub enum BoundsCheckMode {
#[serde(rename = "enforce")]
Enforce,
#[serde(rename = "validate")]
Validate,
#[default]
#[serde(rename = "auto")]
Auto,
}
#[derive(Default, Clone, Copy, Debug, serde::Serialize, serde::Deserialize)]
pub enum CompilationLogLevel {
#[default]
#[serde(rename = "disabled")]
Disabled,
#[serde(rename = "basic")]
Basic,
#[serde(rename = "full")]
Full,
}
impl LogLevel for CompilationLogLevel {}