diff --git a/cpp/src/game.rs b/cpp/src/game.rs index 50312d77..92933373 100644 --- a/cpp/src/game.rs +++ b/cpp/src/game.rs @@ -125,9 +125,8 @@ impl Game { &mut self, additional_data_paths: &[&str], ) -> Result<(), VerboseError> { - self.0 - .set_additional_data_paths(&strings_to_paths(additional_data_paths)) - .map_err(Into::into) + let paths = additional_data_paths.iter().map(Into::into).collect(); + self.0.set_additional_data_paths(paths).map_err(Into::into) } pub fn database(&self) -> Box { diff --git a/nodejs/src/game.rs b/nodejs/src/game.rs index 8fb45d3a..e793fb55 100644 --- a/nodejs/src/game.rs +++ b/nodejs/src/game.rs @@ -104,7 +104,8 @@ impl Game { #[napi] pub fn set_additional_data_paths(&mut self, paths: Vec) -> Result<(), VerboseError> { - self.0.set_additional_data_paths(&as_paths(&paths))?; + let paths: Vec<_> = paths.into_iter().map(Into::into).collect(); + self.0.set_additional_data_paths(paths)?; Ok(()) } diff --git a/python/src/game.rs b/python/src/game.rs index 2eabb52d..c3458c81 100644 --- a/python/src/game.rs +++ b/python/src/game.rs @@ -97,9 +97,8 @@ impl Game { self.0.additional_data_paths() } - #[expect(clippy::needless_pass_by_value, reason = "Required by PyO3")] fn set_additional_data_paths(&mut self, paths: Vec) -> Result<(), VerboseError> { - self.0.set_additional_data_paths(&as_paths(&paths))?; + self.0.set_additional_data_paths(paths)?; Ok(()) } diff --git a/src/game.rs b/src/game.rs index f3adf326..c278546a 100644 --- a/src/game.rs +++ b/src/game.rs @@ -272,23 +272,18 @@ impl Game { /// database object. pub fn set_additional_data_paths( &mut self, - additional_data_paths: &[&Path], + additional_data_paths: Vec, ) -> Result<(), DatabaseLockPoisonError> { - let paths: Vec<_> = additional_data_paths - .iter() - .map(|p| p.to_path_buf()) - .collect(); - let mut database = self.database.write()?; database.clear_condition_cache(); self.load_order .game_settings_mut() - .set_additional_plugins_directories(paths.clone()); + .set_additional_plugins_directories(additional_data_paths.clone()); database .condition_evaluator_state_mut() - .set_additional_data_paths(paths); + .set_additional_data_paths(additional_data_paths); Ok(()) } @@ -1222,7 +1217,7 @@ mod tests { std::fs::File::create(fixture.data_path().join("plugin.esp")).unwrap(); - game.set_additional_data_paths(&[Path::new("")]).unwrap(); + game.set_additional_data_paths(vec!["".into()]).unwrap(); let evaluated_metadata = game .database() @@ -1268,8 +1263,10 @@ mod tests { .set_modified(SystemTime::now() + Duration::from_secs(3600)) .unwrap(); - game.set_additional_data_paths(&[data_file_path.parent().unwrap()]) - .unwrap(); + game.set_additional_data_paths(vec![ + data_file_path.parent().unwrap().to_path_buf(), + ]) + .unwrap(); game.load_current_load_order_state().unwrap(); load_order.push(filename.to_owned()); @@ -1724,8 +1721,11 @@ mod tests { ) .unwrap(); - game.set_additional_data_paths(&[path1.parent().unwrap(), path2.parent().unwrap()]) - .unwrap(); + game.set_additional_data_paths(vec![ + path1.parent().unwrap().to_path_buf(), + path2.parent().unwrap().to_path_buf(), + ]) + .unwrap(); game.load_plugins_common(&[], LoadScope::HeaderOnly) .unwrap();