diff --git a/src/platforms/amazon/amazon_platform.rs b/src/platforms/amazon/amazon_platform.rs index 2a69e4e..8ca34c2 100644 --- a/src/platforms/amazon/amazon_platform.rs +++ b/src/platforms/amazon/amazon_platform.rs @@ -89,7 +89,7 @@ impl AmazonPlatform { let connection = sqlite::open(sqllite_path)?; let mut statement = connection.prepare("SELECT Id, ProductTitle FROM DbSet WHERE Installed = 1")?; - while let State::Row = statement.next().unwrap() { + while let Ok(State::Row) = statement.next() { let id = statement.read::(0); let title = statement.read::(1); if let (Ok(id), Ok(title)) = (id, title) { diff --git a/src/platforms/egs/manifest_item.rs b/src/platforms/egs/manifest_item.rs index e0e2e50..ea5950d 100644 --- a/src/platforms/egs/manifest_item.rs +++ b/src/platforms/egs/manifest_item.rs @@ -53,10 +53,14 @@ fn exe_shortcut(manifest: ManifestItem) -> ShortcutOwned { let start_dir = start_dir.trim_matches('\"'); #[cfg(target_family = "unix")] - let start_dir = format!("\"{}\"", start_dir); + let start_dir_string = format!("\"{}\"", start_dir); + #[cfg(target_family = "unix")] + let start_dir = start_dir_string.as_str(); #[cfg(target_family = "unix")] - let exe = format!("\"{}\"", exe); + let exe_string = format!("\"{}\"", exe); + #[cfg(target_family = "unix")] + let exe = exe_string.as_str(); let parameters = match manifest.compat_folder.as_ref() { Some(compat_folder) => format!( @@ -69,9 +73,9 @@ fn exe_shortcut(manifest: ManifestItem) -> ShortcutOwned { Shortcut::new( "0", manifest.display_name.as_str(), - &exe, - &start_dir, - &exe, + exe, + start_dir, + exe, "", parameters.as_str(), ) diff --git a/src/platforms/itch/itch_platform.rs b/src/platforms/itch/itch_platform.rs index e70447a..e8c284a 100644 --- a/src/platforms/itch/itch_platform.rs +++ b/src/platforms/itch/itch_platform.rs @@ -85,12 +85,14 @@ pub fn get_default_location() -> String { #[cfg(target_os = "windows")] pub fn get_default_location() -> String { let key = "APPDATA"; - let appdata = std::env::var(key).expect("Expected a APPDATA variable to be defined"); - Path::new(&appdata) - .join("itch") - .to_str() - .unwrap() - .to_string() + std::env::var(key) + .map(|appdata| { + Path::new(&appdata) + .join("itch") + .to_string_lossy() + .to_string() + }) + .unwrap_or_default() //C:\Users\phili\AppData\Local\itch } diff --git a/src/platforms/playnite/playnite_parser.rs b/src/platforms/playnite/playnite_parser.rs index 3cd92d5..f0e4e7f 100644 --- a/src/platforms/playnite/playnite_parser.rs +++ b/src/platforms/playnite/playnite_parser.rs @@ -14,7 +14,7 @@ pub(crate) struct NamesAndId { pub(crate) installed: bool, } -pub(crate) fn parse_db<'a>(content: &'a [u8]) -> nom::IResult<&'a [u8], Vec> { +pub(crate) fn parse_db(content: &[u8]) -> nom::IResult<&[u8], Vec> { many0(parse_game)(content) } @@ -23,16 +23,13 @@ fn parse_game(i: &[u8]) -> nom::IResult<&[u8], NamesAndId> { let (i, _taken) = take_until("Image")(i)?; let (i, prefix_and_id) = take_until("\\")(i)?; let id_bytes = prefix_and_id - .split(|b| *b == 0 as u8) + .split(|b| *b == 0_u8) .last() .unwrap_or_default(); let id = String::from_utf8_lossy(id_bytes).to_string(); let (i, _taken) = take_until("IsInstalled")(i)?; let (i, _taken) = tag("IsInstalled")(i)?; - let installed = match i.get(1) { - Some(1u8) => true, - _ => false, - }; + let installed = matches!(i.get(1), Some(1u8)); let (i, _taken) = take_until("InstallSizeGroup")(i)?; let (i, _taken) = take_until("Name")(i)?; let (i, _taken) = take(4usize)(i)?; diff --git a/src/platforms/playnite/playnite_platform.rs b/src/platforms/playnite/playnite_platform.rs index 70aecdb..05e9cdc 100644 --- a/src/platforms/playnite/playnite_platform.rs +++ b/src/platforms/playnite/playnite_platform.rs @@ -87,13 +87,13 @@ impl PlaynitePlatform { let mut res = vec![]; let (launcher_path, games_file_path) = self.find_paths()?; if games_file_path.exists() { - let games_bytes = std::fs::read(&games_file_path).unwrap(); + let games_bytes = std::fs::read(&games_file_path)?; let (_, games) = parse_db(&games_bytes).map_err(|e| eyre::eyre!(e.to_string()))?; for game in games { if game.installed || !self.settings.installed_only { res.push(PlayniteGame { id: game.id, - launcher_path: launcher_path.clone().into(), + launcher_path: launcher_path.clone(), name: game.name, }); } @@ -105,7 +105,7 @@ impl PlaynitePlatform { fn find_paths(&self) -> Result<(PathBuf, PathBuf), color_eyre::Report> { if self.settings.use_portalbe_version { let launcher_path = Path::new(&self.settings.portable_launcher_path).to_path_buf(); - let p = launcher_path.parent().unwrap_or(Path::new("")); + let p = launcher_path.parent().unwrap_or_else(||Path::new("")); let games_file_path = p.join("library").join("games.db"); Ok((launcher_path, games_file_path)) } else { @@ -117,7 +117,7 @@ impl PlaynitePlatform { return Err(eyre::eyre!("Did not find Playnite installation")); } let app_data_path = env::var("APPDATA")?; - let launcher_path = launcher_path.to_path_buf(); + let launcher_path = launcher_path; let playnite_folder = Path::new(&app_data_path).join("Playnite"); let games_file_path = playnite_folder.join("library").join("games.db"); Ok((launcher_path, games_file_path)) diff --git a/src/steam/restarter.rs b/src/steam/restarter.rs index 1c7bbcb..4f7b292 100644 --- a/src/steam/restarter.rs +++ b/src/steam/restarter.rs @@ -33,7 +33,7 @@ pub fn ensure_steam_started(settings: &super::SteamSettings) { let folder = super::get_steam_path(settings); if let Ok(folder) = folder { let path = std::path::Path::new(&folder).join(steam_name); - let mut command = Command::new(&path); + let mut command = Command::new(path); if let Err(e) = command.spawn() { println!("Failed to start steam: {:?}", e); };