From d358935386f7921594ecdb576e4b29d9efa44776 Mon Sep 17 00:00:00 2001 From: Dark-Alex-17 Date: Tue, 8 Aug 2023 10:50:05 -0600 Subject: [PATCH] Optimized copy-able types --- src/app/mod.rs | 2 +- src/app/radarr.rs | 6 ++-- src/handlers/mod.rs | 4 +-- .../radarr_handlers/add_movie_handler.rs | 4 +-- src/handlers/radarr_handlers/mod.rs | 36 +++++++------------ .../radarr_handlers/movie_details_handler.rs | 30 +++++----------- src/models/mod.rs | 2 +- src/models/radarr_models.rs | 8 ++--- src/network/mod.rs | 6 ++-- src/network/radarr_network.rs | 2 +- src/ui/radarr_ui/add_movie_ui.rs | 6 ++-- src/ui/radarr_ui/mod.rs | 2 +- src/ui/radarr_ui/movie_details_ui.rs | 2 +- 13 files changed, 42 insertions(+), 68 deletions(-) diff --git a/src/app/mod.rs b/src/app/mod.rs index 96991c6..896d851 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -74,7 +74,7 @@ impl App { if self.tick_count % self.tick_until_poll == 0 || self.is_routing || self.should_refresh { if let Route::Radarr(active_radarr_block) = self.get_current_route() { self - .radarr_on_tick(active_radarr_block.clone(), is_first_render) + .radarr_on_tick(*active_radarr_block, is_first_render) .await; } diff --git a/src/app/radarr.rs b/src/app/radarr.rs index c2a3afd..95cb3c6 100644 --- a/src/app/radarr.rs +++ b/src/app/radarr.rs @@ -174,7 +174,7 @@ impl Default for RadarrData { } } -#[derive(Clone, PartialEq, Eq, Debug)] +#[derive(Clone, Copy, PartialEq, Eq, Debug)] pub enum ActiveRadarrBlock { AddMovieSearchInput, AddMovieSearchResults, @@ -327,9 +327,7 @@ impl App { if self.data.radarr_data.prompt_confirm { self.data.radarr_data.prompt_confirm = false; if let Some(radarr_event) = &self.data.radarr_data.prompt_confirm_action { - self - .dispatch_network_event(radarr_event.clone().into()) - .await; + self.dispatch_network_event((*radarr_event).into()).await; self.should_refresh = true; self.data.radarr_data.prompt_confirm_action = None; } diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 353967e..90478fb 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -43,7 +43,7 @@ pub trait KeyEventHandler<'a, T: Into> { } pub fn handle_events(key: Key, app: &mut App) { - if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() { + if let Route::Radarr(active_radarr_block) = *app.get_current_route() { RadarrHandler::with(&key, app, &active_radarr_block).handle() } } @@ -57,7 +57,7 @@ fn handle_clear_errors(app: &mut App) { fn handle_prompt_toggle(app: &mut App, key: &Key) { match key { _ if *key == DEFAULT_KEYBINDINGS.left.key || *key == DEFAULT_KEYBINDINGS.right.key => { - if let Route::Radarr(_) = app.get_current_route().clone() { + if let Route::Radarr(_) = *app.get_current_route() { app.data.radarr_data.prompt_confirm = !app.data.radarr_data.prompt_confirm; } } diff --git a/src/handlers/radarr_handlers/add_movie_handler.rs b/src/handlers/radarr_handlers/add_movie_handler.rs index 3639a37..b6270a2 100644 --- a/src/handlers/radarr_handlers/add_movie_handler.rs +++ b/src/handlers/radarr_handlers/add_movie_handler.rs @@ -517,7 +517,7 @@ mod tests { ) { let mut app = App::default(); app.push_navigation_stack(ActiveRadarrBlock::AddMoviePrompt.into()); - app.data.radarr_data.selected_block = selected_block.clone(); + app.data.radarr_data.selected_block = selected_block; AddMovieHandler::with(&SUBMIT_KEY, &mut app, &ActiveRadarrBlock::AddMoviePrompt).handle(); @@ -536,7 +536,7 @@ mod tests { ) { let mut app = App::default(); app.push_navigation_stack(ActiveRadarrBlock::AddMoviePrompt.into()); - app.push_navigation_stack(active_radarr_block.clone().into()); + app.push_navigation_stack(active_radarr_block.into()); AddMovieHandler::with(&SUBMIT_KEY, &mut app, &active_radarr_block).handle(); diff --git a/src/handlers/radarr_handlers/mod.rs b/src/handlers/radarr_handlers/mod.rs index 9c38a8a..8eff314 100644 --- a/src/handlers/radarr_handlers/mod.rs +++ b/src/handlers/radarr_handlers/mod.rs @@ -205,25 +205,13 @@ impl<'a> KeyEventHandler<'a, ActiveRadarrBlock> for RadarrHandler<'a> { _ if *self.key == DEFAULT_KEYBINDINGS.left.key => { self.app.data.radarr_data.main_tabs.previous(); self.app.pop_and_push_navigation_stack( - self - .app - .data - .radarr_data - .main_tabs - .get_active_route() - .clone(), + *self.app.data.radarr_data.main_tabs.get_active_route(), ); } _ if *self.key == DEFAULT_KEYBINDINGS.right.key => { self.app.data.radarr_data.main_tabs.next(); self.app.pop_and_push_navigation_stack( - self - .app - .data - .radarr_data - .main_tabs - .get_active_route() - .clone(), + *self.app.data.radarr_data.main_tabs.get_active_route(), ); } _ => (), @@ -673,7 +661,7 @@ mod tests { assert_eq!( app.data.radarr_data.main_tabs.get_active_route(), - &expected_radarr_block.clone().into() + &expected_radarr_block.into() ); assert_eq!(app.get_current_route(), &expected_radarr_block.into()); } @@ -699,7 +687,7 @@ mod tests { assert_eq!( app.data.radarr_data.main_tabs.get_active_route(), - &expected_radarr_block.clone().into() + &expected_radarr_block.into() ); assert_eq!(app.get_current_route(), &expected_radarr_block.into()); } @@ -869,8 +857,8 @@ mod tests { ) { let mut app = App::default(); app.data.radarr_data.prompt_confirm = true; - app.push_navigation_stack(base_route.clone().into()); - app.push_navigation_stack(prompt_block.clone().into()); + app.push_navigation_stack(base_route.into()); + app.push_navigation_stack(prompt_block.into()); RadarrHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle(); @@ -899,8 +887,8 @@ mod tests { #[case] prompt_block: ActiveRadarrBlock, ) { let mut app = App::default(); - app.push_navigation_stack(base_route.clone().into()); - app.push_navigation_stack(prompt_block.clone().into()); + app.push_navigation_stack(base_route.into()); + app.push_navigation_stack(prompt_block.into()); RadarrHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle(); @@ -932,8 +920,8 @@ mod tests { ) { let mut app = App::default(); app.should_ignore_quit_key = true; - app.push_navigation_stack(base_block.clone().into()); - app.push_navigation_stack(search_block.clone().into()); + app.push_navigation_stack(base_block.into()); + app.push_navigation_stack(search_block.into()); app.data.radarr_data = create_test_radarr_data(); RadarrHandler::with(&ESC_KEY, &mut app, &search_block).handle(); @@ -960,8 +948,8 @@ mod tests { #[case] prompt_block: ActiveRadarrBlock, ) { let mut app = App::default(); - app.push_navigation_stack(base_block.clone().into()); - app.push_navigation_stack(prompt_block.clone().into()); + app.push_navigation_stack(base_block.into()); + app.push_navigation_stack(prompt_block.into()); app.data.radarr_data.prompt_confirm = true; RadarrHandler::with(&ESC_KEY, &mut app, &prompt_block).handle(); diff --git a/src/handlers/radarr_handlers/movie_details_handler.rs b/src/handlers/radarr_handlers/movie_details_handler.rs index 6f0eec2..630c967 100644 --- a/src/handlers/radarr_handlers/movie_details_handler.rs +++ b/src/handlers/radarr_handlers/movie_details_handler.rs @@ -88,25 +88,13 @@ impl<'a> KeyEventHandler<'a, ActiveRadarrBlock> for MovieDetailsHandler<'a> { _ if *self.key == DEFAULT_KEYBINDINGS.left.key => { self.app.data.radarr_data.movie_info_tabs.previous(); self.app.pop_and_push_navigation_stack( - self - .app - .data - .radarr_data - .movie_info_tabs - .get_active_route() - .clone(), + *self.app.data.radarr_data.movie_info_tabs.get_active_route(), ); } _ if *self.key == DEFAULT_KEYBINDINGS.right.key => { self.app.data.radarr_data.movie_info_tabs.next(); self.app.pop_and_push_navigation_stack( - self - .app - .data - .radarr_data - .movie_info_tabs - .get_active_route() - .clone(), + *self.app.data.radarr_data.movie_info_tabs.get_active_route(), ); } _ => (), @@ -393,14 +381,14 @@ mod tests { #[case] right_block: ActiveRadarrBlock, ) { let mut app = App::default(); - app.push_navigation_stack(right_block.clone().into()); + app.push_navigation_stack(right_block.into()); app.data.radarr_data.movie_info_tabs.index = app .data .radarr_data .movie_info_tabs .tabs .iter() - .position(|tab_route| tab_route.route == right_block.clone().into()) + .position(|tab_route| tab_route.route == right_block.into()) .unwrap_or_default(); MovieDetailsHandler::with(&DEFAULT_KEYBINDINGS.left.key, &mut app, &right_block).handle(); @@ -409,7 +397,7 @@ mod tests { app.get_current_route(), app.data.radarr_data.movie_info_tabs.get_active_route() ); - assert_eq!(app.get_current_route(), &left_block.clone().into()); + assert_eq!(app.get_current_route(), &left_block.into()); MovieDetailsHandler::with(&DEFAULT_KEYBINDINGS.right.key, &mut app, &left_block).handle(); @@ -461,7 +449,7 @@ mod tests { let mut app = App::default(); app.data.radarr_data.prompt_confirm = true; app.push_navigation_stack(ActiveRadarrBlock::MovieDetails.into()); - app.push_navigation_stack(prompt_block.clone().into()); + app.push_navigation_stack(prompt_block.into()); MovieDetailsHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle(); @@ -487,7 +475,7 @@ mod tests { ) { let mut app = App::default(); app.push_navigation_stack(ActiveRadarrBlock::MovieDetails.into()); - app.push_navigation_stack(prompt_block.clone().into()); + app.push_navigation_stack(prompt_block.into()); MovieDetailsHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle(); @@ -526,7 +514,7 @@ mod tests { let mut app = App::default(); app.data.radarr_data = create_test_radarr_data(); app.push_navigation_stack(ActiveRadarrBlock::Movies.into()); - app.push_navigation_stack(active_radarr_block.clone().into()); + app.push_navigation_stack(active_radarr_block.into()); MovieDetailsHandler::with(&ESC_KEY, &mut app, &active_radarr_block).handle(); @@ -546,7 +534,7 @@ mod tests { let mut app = App::default(); app.data.radarr_data.prompt_confirm = true; app.push_navigation_stack(ActiveRadarrBlock::Movies.into()); - app.push_navigation_stack(prompt_block.clone().into()); + app.push_navigation_stack(prompt_block.into()); MovieDetailsHandler::with(&ESC_KEY, &mut app, &prompt_block).handle(); diff --git a/src/models/mod.rs b/src/models/mod.rs index 7220830..85a8e5a 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -8,7 +8,7 @@ use crate::app::radarr::ActiveRadarrBlock; pub mod radarr_models; -#[derive(Clone, PartialEq, Eq, Debug)] +#[derive(Clone, Copy, PartialEq, Eq, Debug)] pub enum Route { Radarr(ActiveRadarrBlock), Sonarr, diff --git a/src/models/radarr_models.rs b/src/models/radarr_models.rs index 64f4cbe..e968ad1 100644 --- a/src/models/radarr_models.rs +++ b/src/models/radarr_models.rs @@ -292,7 +292,7 @@ pub struct CommandBody { pub name: String, } -#[derive(Default, PartialEq, Eq, Clone, Debug, EnumIter)] +#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, EnumIter)] pub enum MinimumAvailability { #[default] Announced, @@ -314,7 +314,7 @@ impl Display for MinimumAvailability { } impl MinimumAvailability { - pub fn to_display_str(&self) -> &str { + pub fn to_display_str<'a>(self) -> &'a str { match self { MinimumAvailability::Tba => "TBA", MinimumAvailability::Announced => "Announced", @@ -324,7 +324,7 @@ impl MinimumAvailability { } } -#[derive(Default, PartialEq, Eq, Clone, Debug, EnumIter)] +#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, EnumIter)] pub enum Monitor { #[default] MovieOnly, @@ -344,7 +344,7 @@ impl Display for Monitor { } impl Monitor { - pub fn to_display_str(&self) -> &str { + pub fn to_display_str<'a>(self) -> &'a str { match self { Monitor::MovieOnly => "Movie only", Monitor::MovieAndCollection => "Movie and Collection", diff --git a/src/network/mod.rs b/src/network/mod.rs index 20ba2f6..592beb4 100644 --- a/src/network/mod.rs +++ b/src/network/mod.rs @@ -48,7 +48,7 @@ impl<'a> Network<'a> { T: Serialize + Default + Debug, R: DeserializeOwned, { - let method = request_props.method.clone(); + let method = request_props.method; match self.call_api(request_props).await.send().await { Ok(response) => { if response.status().is_success() { @@ -120,7 +120,7 @@ impl<'a> Network<'a> { } } -#[derive(Clone, Debug, Display, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, Display, PartialEq, Eq)] pub enum RequestMethod { Get, Post, @@ -303,7 +303,7 @@ mod tests { #[values(RequestMethod::Get, RequestMethod::Post, RequestMethod::Delete)] request_method: RequestMethod, ) { - let (async_server, app_arc, url) = mock_api(request_method.clone(), 404, true).await; + let (async_server, app_arc, url) = mock_api(request_method, 404, true).await; let network = Network::new(reqwest::Client::new(), &app_arc); network diff --git a/src/network/radarr_network.rs b/src/network/radarr_network.rs index 33ddef8..0cbba57 100644 --- a/src/network/radarr_network.rs +++ b/src/network/radarr_network.rs @@ -16,7 +16,7 @@ use crate::models::ScrollableText; use crate::network::{Network, NetworkEvent, RequestMethod, RequestProps}; use crate::utils::{convert_runtime, convert_to_gb}; -#[derive(Debug, Eq, PartialEq, Clone)] +#[derive(Debug, Eq, PartialEq, Clone, Copy)] pub enum RadarrEvent { AddMovie, DeleteDownload, diff --git a/src/ui/radarr_ui/add_movie_ui.rs b/src/ui/radarr_ui/add_movie_ui.rs index 1240ff7..b4deec0 100644 --- a/src/ui/radarr_ui/add_movie_ui.rs +++ b/src/ui/radarr_ui/add_movie_ui.rs @@ -24,7 +24,7 @@ pub(super) fn draw_add_movie_search_popup( app: &mut App, area: Rect, ) { - if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() { + if let Route::Radarr(active_radarr_block) = *app.get_current_route() { match active_radarr_block { ActiveRadarrBlock::AddMovieSearchInput | ActiveRadarrBlock::AddMovieSearchResults => { draw_add_movie_search(f, app, area); @@ -66,7 +66,7 @@ fn draw_add_movie_search(f: &mut Frame<'_, B>, app: &mut App, area: .style(style_default()) .block(title_block_centered("Add Movie")); - if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() { + if let Route::Radarr(active_radarr_block) = *app.get_current_route() { match active_radarr_block { ActiveRadarrBlock::AddMovieSearchInput => { show_cursor(f, chunks[0], block_content); @@ -169,7 +169,7 @@ fn draw_add_movie_search(f: &mut Frame<'_, B>, app: &mut App, area: } fn draw_confirmation_popup(f: &mut Frame<'_, B>, app: &mut App, prompt_area: Rect) { - if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() { + if let Route::Radarr(active_radarr_block) = *app.get_current_route() { match active_radarr_block { ActiveRadarrBlock::AddMovieSelectMonitor => { draw_drop_down_popup( diff --git a/src/ui/radarr_ui/mod.rs b/src/ui/radarr_ui/mod.rs index d7bad5d..acdfca5 100644 --- a/src/ui/radarr_ui/mod.rs +++ b/src/ui/radarr_ui/mod.rs @@ -36,7 +36,7 @@ mod movie_details_ui; pub(super) fn draw_radarr_ui(f: &mut Frame<'_, B>, app: &mut App, area: Rect) { let (content_rect, _) = draw_tabs(f, area, "Movies", &app.data.radarr_data.main_tabs); - if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() { + if let Route::Radarr(active_radarr_block) = *app.get_current_route() { match active_radarr_block { ActiveRadarrBlock::Movies => draw_library(f, app, content_rect), ActiveRadarrBlock::SearchMovie | ActiveRadarrBlock::FilterMovies => { diff --git a/src/ui/radarr_ui/movie_details_ui.rs b/src/ui/radarr_ui/movie_details_ui.rs index c099739..4b78b30 100644 --- a/src/ui/radarr_ui/movie_details_ui.rs +++ b/src/ui/radarr_ui/movie_details_ui.rs @@ -349,7 +349,7 @@ fn draw_movie_releases(f: &mut Frame<'_, B>, app: &mut App, content_ .movie_releases .current_selection_clone() }; - let current_route = app.get_current_route().clone(); + let current_route = *app.get_current_route(); draw_table( f,