Skip to content

Commit a9fd3cf

Browse files
oriongonzaOrionGonzalezdiemol
authored
[rust] don't clone the config struct (#11856)
* don't clone the config struct * fix types --------- Co-authored-by: ogonzalez <[email protected]> Co-authored-by: Diego Molina <[email protected]>
1 parent 42632b4 commit a9fd3cf

File tree

8 files changed

+39
-20
lines changed

8 files changed

+39
-20
lines changed

rust/src/chrome.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,10 @@ impl SeleniumManager for ChromeManager {
280280
&self.config
281281
}
282282

283+
fn get_config_mut(&mut self) -> &mut ManagerConfig {
284+
&mut self.config
285+
}
286+
283287
fn set_config(&mut self, config: ManagerConfig) {
284288
self.config = config;
285289
}

rust/src/edge.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,10 @@ impl SeleniumManager for EdgeManager {
264264
&self.config
265265
}
266266

267+
fn get_config_mut(&mut self) -> &mut ManagerConfig {
268+
&mut self.config
269+
}
270+
267271
fn set_config(&mut self, config: ManagerConfig) {
268272
self.config = config;
269273
}

rust/src/firefox.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ impl SeleniumManager for FirefoxManager {
263263
&self.config
264264
}
265265

266+
fn get_config_mut(&mut self) -> &mut ManagerConfig {
267+
&mut self.config
268+
}
269+
266270
fn set_config(&mut self, config: ManagerConfig) {
267271
self.config = config;
268272
}

rust/src/iexplorer.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,10 @@ impl SeleniumManager for IExplorerManager {
196196
&self.config
197197
}
198198

199+
fn get_config_mut(&mut self) -> &mut ManagerConfig {
200+
&mut self.config
201+
}
202+
199203
fn set_config(&mut self, config: ManagerConfig) {
200204
self.config = config;
201205
}

rust/src/lib.rs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ pub trait SeleniumManager {
111111

112112
fn get_config(&self) -> &ManagerConfig;
113113

114+
fn get_config_mut(&mut self) -> &mut ManagerConfig;
115+
114116
fn set_config(&mut self, config: ManagerConfig);
115117

116118
fn get_logger(&self) -> &Logger;
@@ -362,19 +364,17 @@ pub trait SeleniumManager {
362364
}
363365

364366
fn set_os(&mut self, os: String) {
365-
let mut config = ManagerConfig::clone(self.get_config());
367+
let mut config = self.get_config_mut();
366368
config.os = os;
367-
self.set_config(config);
368369
}
369370

370371
fn get_arch(&self) -> &str {
371372
self.get_config().arch.as_str()
372373
}
373374

374375
fn set_arch(&mut self, arch: String) {
375-
let mut config = ManagerConfig::clone(self.get_config());
376+
let mut config = self.get_config_mut();
376377
config.arch = arch;
377-
self.set_config(config);
378378
}
379379

380380
fn get_browser_version(&self) -> &str {
@@ -383,9 +383,8 @@ pub trait SeleniumManager {
383383

384384
fn set_browser_version(&mut self, browser_version: String) {
385385
if !browser_version.is_empty() {
386-
let mut config = ManagerConfig::clone(self.get_config());
386+
let mut config = self.get_config_mut();
387387
config.browser_version = browser_version;
388-
self.set_config(config);
389388
}
390389
}
391390

@@ -395,9 +394,8 @@ pub trait SeleniumManager {
395394

396395
fn set_driver_version(&mut self, driver_version: String) {
397396
if !driver_version.is_empty() {
398-
let mut config = ManagerConfig::clone(self.get_config());
397+
let mut config = self.get_config_mut();
399398
config.driver_version = driver_version;
400-
self.set_config(config);
401399
}
402400
}
403401

@@ -407,22 +405,20 @@ pub trait SeleniumManager {
407405

408406
fn set_browser_path(&mut self, browser_path: String) {
409407
if !browser_path.is_empty() {
410-
let mut config = ManagerConfig::clone(self.get_config());
408+
let mut config = self.get_config_mut();
411409
config.browser_path = browser_path;
412-
self.set_config(config);
413410
}
414411
}
415412

416413
fn get_proxy(&self) -> &str {
417414
self.get_config().proxy.as_str()
418415
}
419416

420-
fn set_proxy(&mut self, proxy: String) -> Result<(), String> {
417+
fn set_proxy(&mut self, proxy: String) -> Result<(), Box<dyn Error>> {
421418
if !proxy.is_empty() {
422-
let mut config = ManagerConfig::clone(self.get_config());
423-
config.proxy = proxy.to_string();
424-
self.set_config(config);
425419
self.get_logger().debug(format!("Using proxy: {}", &proxy));
420+
let mut config = self.get_config_mut();
421+
config.proxy = proxy;
426422
self.update_http_client()?;
427423
}
428424
Ok(())
@@ -432,12 +428,11 @@ pub trait SeleniumManager {
432428
self.get_config().timeout
433429
}
434430

435-
fn set_timeout(&mut self, timeout: u64) -> Result<(), String> {
436-
let default_timeout = self.get_config().timeout.to_owned();
431+
fn set_timeout(&mut self, timeout: u64) -> Result<(), Box<dyn Error>> {
432+
let mut config = self.get_config_mut();
433+
let default_timeout = config.timeout;
437434
if timeout != default_timeout {
438-
let mut config = ManagerConfig::clone(self.get_config());
439435
config.timeout = timeout;
440-
self.set_config(config);
441436
self.get_logger()
442437
.debug(format!("Using timeout of {} seconds", timeout));
443438
self.update_http_client()?;

rust/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,15 @@ fn main() {
140140
selenium_manager
141141
.set_timeout(cli.timeout)
142142
.and_then(|_| selenium_manager.set_proxy(cli.proxy.unwrap_or_default()))
143-
.and_then(|_| selenium_manager.resolve_driver().map_err(|x| x.to_string()))
143+
.and_then(|_| selenium_manager.resolve_driver())
144144
.and_then(|path| {
145145
let log = selenium_manager.get_logger();
146146
log.info(path.display().to_string());
147147
flush_and_exit(OK, &log);
148148
})
149149
.unwrap_or_else(|err| {
150150
let log = selenium_manager.get_logger();
151-
log.error(err);
151+
log.error(err.to_string());
152152
flush_and_exit(DATAERR, &log);
153153
});
154154
}

rust/src/safari.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ impl SeleniumManager for SafariManager {
113113
&self.config
114114
}
115115

116+
fn get_config_mut(&mut self) -> &mut ManagerConfig {
117+
&mut self.config
118+
}
119+
116120
fn set_config(&mut self, config: ManagerConfig) {
117121
self.config = config;
118122
}

rust/src/safaritp.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ impl SeleniumManager for SafariTPManager {
118118
&self.config
119119
}
120120

121+
fn get_config_mut(&mut self) -> &mut ManagerConfig {
122+
&mut self.config
123+
}
124+
121125
fn set_config(&mut self, config: ManagerConfig) {
122126
self.config = config;
123127
}

0 commit comments

Comments
 (0)