diff --git a/src/app/app_tests.rs b/src/app/app_tests.rs index 7547e5b..9f250dd 100644 --- a/src/app/app_tests.rs +++ b/src/app/app_tests.rs @@ -513,8 +513,7 @@ mod tests { let api_token = "thisisatest".to_owned(); let api_token_file = "/root/.config/api_token".to_owned(); let ssl_cert_path = "/some/path".to_owned(); - let expected_str = format!("ServarrConfig {{ name: Some(\"{}\"), host: Some(\"{}\"), port: Some({}), uri: Some(\"{}\"), weight: Some({}), api_token: Some(\"***********\"), api_token_file: Some(\"{}\"), ssl_cert_path: Some(\"{}\") }}", - name, host, port, uri, weight, api_token_file, ssl_cert_path); + let expected_str = format!("ServarrConfig {{ name: Some(\"{name}\"), host: Some(\"{host}\"), port: Some({port}), uri: Some(\"{uri}\"), weight: Some({weight}), api_token: Some(\"***********\"), api_token_file: Some(\"{api_token_file}\"), ssl_cert_path: Some(\"{ssl_cert_path}\") }}"); let servarr_config = ServarrConfig { name: Some(name), host: Some(host), diff --git a/src/app/mod.rs b/src/app/mod.rs index d1cfbaa..831d5b2 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -63,7 +63,7 @@ impl App<'_> { name } else { idx += 1; - format!("Radarr {}", idx) + format!("Radarr {idx}") }; server_tabs.push(TabRoute { @@ -84,7 +84,7 @@ impl App<'_> { name } else { idx += 1; - format!("Sonarr {}", idx) + format!("Sonarr {idx}") }; server_tabs.push(TabRoute { @@ -296,8 +296,7 @@ impl AppConfig { pub fn verify_config_present_for_cli(&self, command: &Command) { let msg = |servarr: &str| { log_and_print_error(format!( - "{} configuration missing; Unable to run any {} commands.", - servarr, servarr + "{servarr} configuration missing; Unable to run any {servarr} commands." )) }; match command { @@ -368,8 +367,7 @@ impl ServarrConfig { if let Some(api_token_file) = self.api_token_file.as_ref() { if !PathBuf::from(api_token_file).exists() { log_and_print_error(format!( - "The specified {} API token file does not exist", - api_token_file + "The specified {api_token_file} API token file does not exist" )); process::exit(1); } @@ -398,7 +396,7 @@ impl Default for ServarrConfig { } pub fn log_and_print_error(error: String) { - error!("{}", error); + error!("{error}"); eprintln!("error: {}", error.red()); } diff --git a/src/handlers/radarr_handlers/collections/collections_handler_tests.rs b/src/handlers/radarr_handlers/collections/collections_handler_tests.rs index 9d59c57..6467417 100644 --- a/src/handlers/radarr_handlers/collections/collections_handler_tests.rs +++ b/src/handlers/radarr_handlers/collections/collections_handler_tests.rs @@ -663,7 +663,7 @@ mod tests { Collection { id: 3, title: "test 1".into(), - movies: Some(iter::repeat(CollectionMovie::default()).take(3).collect()), + movies: Some(iter::repeat_n(CollectionMovie::default(), 3).collect()), root_folder_path: Some("/nfs/movies".into()), quality_profile_id: 1, search_on_add: false, @@ -673,7 +673,7 @@ mod tests { Collection { id: 2, title: "test 2".into(), - movies: Some(iter::repeat(CollectionMovie::default()).take(7).collect()), + movies: Some(iter::repeat_n(CollectionMovie::default(), 7).collect()), root_folder_path: Some("/htpc/movies".into()), quality_profile_id: 3, search_on_add: true, @@ -683,7 +683,7 @@ mod tests { Collection { id: 1, title: "test 3".into(), - movies: Some(iter::repeat(CollectionMovie::default()).take(1).collect()), + movies: Some(iter::repeat_n(CollectionMovie::default(), 1).collect()), root_folder_path: Some("/nfs/some/stupidly/long/path/to/test/with".into()), quality_profile_id: 1, search_on_add: false, diff --git a/src/network/radarr_network.rs b/src/network/radarr_network.rs index d36e777..1e6f84e 100644 --- a/src/network/radarr_network.rs +++ b/src/network/radarr_network.rs @@ -1128,7 +1128,7 @@ impl Network<'_, '_> { info!("Fetching Radarr logs"); let event = RadarrEvent::GetLogs(events); - let params = format!("pageSize={}&sortDirection=descending&sortKey=time", events); + let params = format!("pageSize={events}&sortDirection=descending&sortKey=time"); let request_props = self .request_props_from(event, RequestMethod::Get, None::<()>, None, Some(params)) .await; @@ -1215,7 +1215,7 @@ impl Network<'_, '_> { .to_owned(); let imdb_rating = if let Some(rating) = ratings.imdb { if let Some(value) = rating.value.as_f64() { - format!("{:.1}", value) + format!("{value:.1}") } else { String::new() } @@ -1235,7 +1235,7 @@ impl Network<'_, '_> { let rotten_tomatoes_rating = if let Some(rating) = ratings.rotten_tomatoes { if let Some(value) = rating.value.as_u64() { - format!("{}%", value) + format!("{value}%") } else { String::new() } diff --git a/src/network/sonarr_network.rs b/src/network/sonarr_network.rs index 854b8cd..c37b84c 100644 --- a/src/network/sonarr_network.rs +++ b/src/network/sonarr_network.rs @@ -1447,7 +1447,7 @@ impl Network<'_, '_> { info!("Fetching all Sonarr history events"); let event = SonarrEvent::GetHistory(events); - let params = format!("pageSize={}&sortDirection=descending&sortKey=date", events); + let params = format!("pageSize={events}&sortDirection=descending&sortKey=date"); let request_props = self .request_props_from(event, RequestMethod::Get, None::<()>, None, Some(params)) .await; @@ -1504,7 +1504,7 @@ impl Network<'_, '_> { info!("Fetching Sonarr logs"); let event = SonarrEvent::GetLogs(events); - let params = format!("pageSize={}&sortDirection=descending&sortKey=time", events); + let params = format!("pageSize={events}&sortDirection=descending&sortKey=time"); let request_props = self .request_props_from(event, RequestMethod::Get, None::<()>, None, Some(params)) .await; @@ -1678,10 +1678,7 @@ impl Network<'_, '_> { RequestMethod::Get, None::<()>, None, - Some(format!( - "seriesId={}&seasonNumber={}", - series_id, season_number - )), + Some(format!("seriesId={series_id}&seasonNumber={season_number}")), ) .await; diff --git a/src/ui/radarr_ui/library/movie_details_ui.rs b/src/ui/radarr_ui/library/movie_details_ui.rs index ac6f1ce..bbfa732 100644 --- a/src/ui/radarr_ui/library/movie_details_ui.rs +++ b/src/ui/radarr_ui/library/movie_details_ui.rs @@ -353,7 +353,7 @@ fn draw_movie_crew(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { .block(layout_block_top_border()) .loading(app.is_loading) .headers(["Crew Member", "Job", "Department"]) - .constraints(iter::repeat(Constraint::Ratio(1, 3)).take(3)) + .constraints(iter::repeat_n(Constraint::Ratio(1, 3), 3)) .footer(help_footer); f.render_widget(crew_table, area); diff --git a/src/ui/radarr_ui/mod.rs b/src/ui/radarr_ui/mod.rs index 18a9f11..5e18a70 100644 --- a/src/ui/radarr_ui/mod.rs +++ b/src/ui/radarr_ui/mod.rs @@ -92,9 +92,11 @@ fn draw_stats_context(f: &mut Frame<'_>, app: &App<'_>, area: Rect) { ]; constraints.append( - &mut iter::repeat(Constraint::Length(1)) - .take(disk_space_vec.len() + root_folders.items.len() + 1) - .collect(), + &mut iter::repeat_n( + Constraint::Length(1), + disk_space_vec.len() + root_folders.items.len() + 1, + ) + .collect(), ); let stat_item_areas = Layout::vertical(constraints).margin(1).split(area); @@ -175,13 +177,10 @@ fn draw_downloads_context(f: &mut Frame<'_>, app: &App<'_>, area: Rect) { let max_items = ((((area.height as f32 / 2.0).floor() * 2.0) as i32) / 2) - 1; let items = cmp::min(downloads_vec.len(), max_items.unsigned_abs() as usize); - let download_item_areas = Layout::vertical( - iter::repeat(Constraint::Length(2)) - .take(items) - .collect::>(), - ) - .margin(1) - .split(area); + let download_item_areas = + Layout::vertical(iter::repeat_n(Constraint::Length(2), items).collect::>()) + .margin(1) + .split(area); for i in 0..items { let DownloadRecord { diff --git a/src/ui/sonarr_ui/library/series_details_ui.rs b/src/ui/sonarr_ui/library/series_details_ui.rs index 647600d..7054310 100644 --- a/src/ui/sonarr_ui/library/series_details_ui.rs +++ b/src/ui/sonarr_ui/library/series_details_ui.rs @@ -258,7 +258,7 @@ fn draw_seasons_table(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { let row = Row::new(vec![ Cell::from(season_monitored.to_owned()), Cell::from(title.clone().unwrap()), - Cell::from(format!("{}/{}", episode_file_count, episode_count)), + Cell::from(format!("{episode_file_count}/{episode_count}")), Cell::from(format!("{size:.2} GB")), ]); if !monitored { diff --git a/src/ui/sonarr_ui/mod.rs b/src/ui/sonarr_ui/mod.rs index 845daea..20d9f60 100644 --- a/src/ui/sonarr_ui/mod.rs +++ b/src/ui/sonarr_ui/mod.rs @@ -106,9 +106,11 @@ fn draw_stats_context(f: &mut Frame<'_>, app: &App<'_>, area: Rect) { ]; constraints.append( - &mut iter::repeat(Constraint::Length(1)) - .take(disk_space_vec.len() + root_folders.items.len() + 1) - .collect(), + &mut iter::repeat_n( + Constraint::Length(1), + disk_space_vec.len() + root_folders.items.len() + 1, + ) + .collect(), ); let stat_item_areas = Layout::vertical(constraints).margin(1).split(area); @@ -189,13 +191,10 @@ fn draw_downloads_context(f: &mut Frame<'_>, app: &App<'_>, area: Rect) { let max_items = ((((area.height as f64 / 2.0).floor() * 2.0) as i64) / 2) - 1; let items = cmp::min(downloads_vec.len(), max_items.unsigned_abs() as usize); - let download_item_areas = Layout::vertical( - iter::repeat(Constraint::Length(2)) - .take(items) - .collect::>(), - ) - .margin(1) - .split(area); + let download_item_areas = + Layout::vertical(iter::repeat_n(Constraint::Length(2), items).collect::>()) + .margin(1) + .split(area); for i in 0..items { let DownloadRecord { diff --git a/src/ui/widgets/confirmation_prompt.rs b/src/ui/widgets/confirmation_prompt.rs index 70f382b..bba0c6e 100644 --- a/src/ui/widgets/confirmation_prompt.rs +++ b/src/ui/widgets/confirmation_prompt.rs @@ -53,7 +53,7 @@ impl ConfirmationPrompt<'_> { ]; constraints.splice( 1..1, - iter::repeat(Constraint::Length(3)).take(checkboxes.len()), + iter::repeat_n(Constraint::Length(3), checkboxes.len()), ); let chunks = Layout::vertical(constraints).margin(1).split(area); let [yes_area, no_area] = diff --git a/src/utils.rs b/src/utils.rs index 2b7aa11..9e4170e 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -39,7 +39,7 @@ pub fn get_log_path() -> PathBuf { log_path.push("managarr"); if let Err(e) = fs::create_dir_all(&log_path) { - eprintln!("Failed to create log directory: {:?}", e); + eprintln!("Failed to create log directory: {e:?}"); } log_path.push("managarr.log"); @@ -96,10 +96,10 @@ pub async fn tail_logs(no_color: bool) { loop { if let Some(Ok(line)) = lines.next() { if no_color { - println!("{}", line); + println!("{line}"); } else { let colored_line = colorize_log_line(&line, &re); - println!("{}", colored_line); + println!("{colored_line}"); } } } @@ -195,7 +195,7 @@ pub(super) fn build_network_client(config: &AppConfig) -> Client { match client_builder.build() { Ok(client) => client, Err(e) => { - error!("Unable to create reqwest client: {}", e); + error!("Unable to create reqwest client: {e}"); eprintln!("error: {}", e.to_string().red()); process::exit(1); } @@ -208,16 +208,14 @@ pub(super) fn create_cert(cert_path: &String, servarr_name: &str) -> Certificate Ok(certificate) => certificate, Err(_) => { log_and_print_error(format!( - "Unable to read the specified {} SSL certificate", - servarr_name + "Unable to read the specified {servarr_name} SSL certificate" )); process::exit(1); } }, Err(_) => { log_and_print_error(format!( - "Unable to open specified {} SSL certificate", - servarr_name + "Unable to open specified {servarr_name} SSL certificate" )); process::exit(1); } @@ -260,7 +258,7 @@ pub(super) async fn start_cli_with_spinner( match cli::handle_command(&app, command, &mut network).await { Ok(output) => { pb.finish(); - println!("{}", output); + println!("{output}"); } Err(e) => { pb.finish(); @@ -287,7 +285,7 @@ pub(super) async fn start_cli_no_spinner( let mut network = Network::new(&app_nw, cancellation_token, reqwest_client); match cli::handle_command(&app, command, &mut network).await { Ok(output) => { - println!("{}", output); + println!("{output}"); } Err(e) => { eprintln!("error: {}", e.to_string().red()); @@ -306,8 +304,7 @@ pub fn select_cli_configuration( let trimmed_name = servarr_name.trim(); if !app.server_tabs.select_tab_by_title(trimmed_name) { log_and_print_error(format!( - "A Servarr titled '{}' was not found in your configuration file", - trimmed_name + "A Servarr titled '{trimmed_name}' was not found in your configuration file" )); process::exit(1); }