Consolidated opts into a manual Default trait implementation (#35257)

Signed-off-by: Shalvin Deo <shalvin.deo@live.com>
This commit is contained in:
Shalvin 2025-02-01 21:18:09 +01:00 committed by GitHub
parent cdd6660113
commit ec6c4bc8fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -15,7 +15,7 @@ use servo_geometry::DeviceIndependentPixel;
use servo_url::ServoUrl; use servo_url::ServoUrl;
/// Global flags for Servo, currently set on the command line. /// Global flags for Servo, currently set on the command line.
#[derive(Clone, Debug, Default, Deserialize, Serialize)] #[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Opts { pub struct Opts {
/// Whether or not the legacy layout system is enabled. /// Whether or not the legacy layout system is enabled.
pub legacy_layout: bool, pub legacy_layout: bool,
@ -207,8 +207,9 @@ pub enum OutputOptions {
Stdout(f64), Stdout(f64),
} }
pub fn default_opts() -> Opts { impl Default for Opts {
Opts { fn default() -> Self {
Self {
legacy_layout: false, legacy_layout: false,
time_profiling: None, time_profiling: None,
time_profiler_trace_path: None, time_profiler_trace_path: None,
@ -239,11 +240,12 @@ pub fn default_opts() -> Opts {
print_pwm: false, print_pwm: false,
} }
} }
}
// Make Opts available globally. This saves having to clone and pass // Make Opts available globally. This saves having to clone and pass
// opts everywhere it is used, which gets particularly cumbersome // opts everywhere it is used, which gets particularly cumbersome
// when passing through the DOM structures. // when passing through the DOM structures.
static OPTIONS: LazyLock<RwLock<Opts>> = LazyLock::new(|| RwLock::new(default_opts())); static OPTIONS: LazyLock<RwLock<Opts>> = LazyLock::new(|| RwLock::new(Opts::default()));
pub fn set_options(opts: Opts) { pub fn set_options(opts: Opts) {
*OPTIONS.write().unwrap() = opts; *OPTIONS.write().unwrap() = opts;