diff options
author | boastful-squirrel <boastful.squirrel@gmail.com> | 2019-04-26 18:08:16 +0000 |
---|---|---|
committer | boastful-squirrel <boastful.squirrel@gmail.com> | 2019-04-26 18:08:16 +0000 |
commit | 4a9711b71674c6b62512dd6286869690d4497bcc (patch) | |
tree | cd2d14e7635a96fdcf23d7a70f2b65bb78f515fe /src | |
parent | Merged query parameter structs + improved file upload errors (diff) | |
download | miniserve-4a9711b71674c6b62512dd6286869690d4497bcc.tar.gz miniserve-4a9711b71674c6b62512dd6286869690d4497bcc.zip |
Made ColorScheme, SortingMethod and SortingOrder enums derive Copy
Diffstat (limited to '')
-rw-r--r-- | src/listing.rs | 16 | ||||
-rw-r--r-- | src/main.rs | 4 | ||||
-rw-r--r-- | src/renderer.rs | 80 | ||||
-rw-r--r-- | src/themes.rs | 10 |
4 files changed, 55 insertions, 55 deletions
diff --git a/src/listing.rs b/src/listing.rs index e718702..7cc125d 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -25,7 +25,7 @@ pub struct QueryParameters { } /// Available sorting methods -#[derive(Deserialize, Clone, EnumString, Display)] +#[derive(Deserialize, Clone, EnumString, Display, Copy)] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum SortingMethod { @@ -40,7 +40,7 @@ pub enum SortingMethod { } /// Available sorting orders -#[derive(Deserialize, Clone, EnumString, Display)] +#[derive(Deserialize, Clone, EnumString, Display, Copy)] pub enum SortingOrder { /// Ascending order #[serde(alias = "asc")] @@ -146,10 +146,10 @@ pub fn directory_listing<S>( let (sort_method, sort_order, download, color_scheme) = if let Ok(query) = Query::<QueryParameters>::extract(req) { ( - query.sort.clone(), - query.order.clone(), + query.sort, + query.order, query.download.clone(), - query.theme.clone(), + query.theme, ) } else { (None, None, None, None) @@ -211,7 +211,7 @@ pub fn directory_listing<S>( } } - if let Some(sorting_method) = &sort_method { + if let Some(sorting_method) = sort_method { match sorting_method { SortingMethod::Name => entries .sort_by(|e1, e2| alphanumeric_sort::compare_str(e1.name.clone(), e2.name.clone())), @@ -235,13 +235,13 @@ pub fn directory_listing<S>( entries.sort_by(|e1, e2| alphanumeric_sort::compare_str(e1.name.clone(), e2.name.clone())) } - if let Some(sorting_order) = &sort_order { + if let Some(sorting_order) = sort_order { if let SortingOrder::Descending = sorting_order { entries.reverse() } } - let color_scheme = color_scheme.unwrap_or_else(|| default_color_scheme.clone()); + let color_scheme = color_scheme.unwrap_or_else(|| default_color_scheme); if let Some(compression_method) = &download { log::info!( diff --git a/src/main.rs b/src/main.rs index bc8f3f0..a9d44df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -239,7 +239,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { let path = &app.state().path; let no_symlinks = app.state().no_symlinks; let random_route = app.state().random_route.clone(); - let default_color_scheme = app.state().default_color_scheme.clone(); + let default_color_scheme = app.state().default_color_scheme; let file_upload = app.state().file_upload; upload_route = if let Some(random_route) = app.state().random_route.clone() { format!("/{}/upload", random_route) @@ -261,7 +261,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { no_symlinks, file_upload, random_route.clone(), - default_color_scheme.clone(), + default_color_scheme, u_r.clone(), ) }), diff --git a/src/renderer.rs b/src/renderer.rs index b292e70..76990de 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -23,7 +23,7 @@ pub fn page( current_dir: &str, ) -> Markup { html! { - (page_header(serve_path, &color_scheme, file_upload)) + (page_header(serve_path, color_scheme, file_upload)) body#drop-container { @if file_upload { div.drag-form { @@ -32,7 +32,7 @@ pub fn page( } } } - (color_scheme_selector(&sort_method, &sort_order, &color_scheme, &default_color_scheme, serve_path)) + (color_scheme_selector(sort_method, sort_order, color_scheme, default_color_scheme, serve_path)) div.container { span#top { } h1.title { "Index of " (serve_path) } @@ -56,9 +56,9 @@ pub fn page( } table { thead { - th { (build_link("name", "Name", &sort_method, &sort_order, &color_scheme, &default_color_scheme)) } - th { (build_link("size", "Size", &sort_method, &sort_order, &color_scheme, &default_color_scheme)) } - th { (build_link("date", "Last modification", &sort_method, &sort_order, &color_scheme, &default_color_scheme)) } + th { (build_link("name", "Name", sort_method, sort_order, color_scheme, default_color_scheme)) } + th { (build_link("size", "Size", sort_method, sort_order, color_scheme, default_color_scheme)) } + th { (build_link("date", "Last modification", sort_method, sort_order, color_scheme, default_color_scheme)) } } tbody { @if !is_root { @@ -66,7 +66,7 @@ pub fn page( tr { td colspan="3" { span.root-chevron { (chevron_left()) } - a.root href=(parametrized_link(&parent, &sort_method, &sort_order, &color_scheme, &default_color_scheme)) { + a.root href=(parametrized_link(&parent, sort_method, sort_order, color_scheme, default_color_scheme)) { "Parent directory" } } @@ -74,7 +74,7 @@ pub fn page( } } @for entry in entries { - (entry_row(entry, &sort_method, &sort_order, &color_scheme, &default_color_scheme)) + (entry_row(entry, sort_method, sort_order, color_scheme, default_color_scheme)) } } } @@ -88,10 +88,10 @@ pub fn page( /// Partial: color scheme selector fn color_scheme_selector( - sort_method: &Option<SortingMethod>, - sort_order: &Option<SortingOrder>, - active_color_scheme: &ColorScheme, - default_color_scheme: &ColorScheme, + sort_method: Option<SortingMethod>, + sort_order: Option<SortingOrder>, + active_color_scheme: ColorScheme, + default_color_scheme: ColorScheme, serve_path: &str, ) -> Markup { html! { @@ -103,13 +103,13 @@ fn color_scheme_selector( } ul { @for color_scheme in ColorScheme::iter() { - @if active_color_scheme == &color_scheme { + @if active_color_scheme == color_scheme { li.active { - (color_scheme_link(&sort_method, &sort_order, &color_scheme, &default_color_scheme, serve_path)) + (color_scheme_link(sort_method, sort_order, color_scheme, default_color_scheme, serve_path)) } } @else { li { - (color_scheme_link(&sort_method, &sort_order, &color_scheme, &default_color_scheme, serve_path)) + (color_scheme_link(sort_method, sort_order, color_scheme, default_color_scheme, serve_path)) } } } @@ -122,18 +122,18 @@ fn color_scheme_selector( /// Partial: color scheme link fn color_scheme_link( - sort_method: &Option<SortingMethod>, - sort_order: &Option<SortingOrder>, - color_scheme: &ColorScheme, - default_color_scheme: &ColorScheme, + sort_method: Option<SortingMethod>, + sort_order: Option<SortingOrder>, + color_scheme: ColorScheme, + default_color_scheme: ColorScheme, serve_path: &str, ) -> Markup { let link = parametrized_link( serve_path, - &sort_method, - &sort_order, - &color_scheme, - &default_color_scheme, + sort_method, + sort_order, + color_scheme, + default_color_scheme, ); let title = format!("Switch to {} theme", color_scheme); @@ -165,10 +165,10 @@ fn archive_button(compress_method: CompressionMethod) -> Markup { /// If they are set, adds query parameters to links to keep them across pages fn parametrized_link( link: &str, - sort_method: &Option<SortingMethod>, - sort_order: &Option<SortingOrder>, - color_scheme: &ColorScheme, - default_color_scheme: &ColorScheme, + sort_method: Option<SortingMethod>, + sort_order: Option<SortingOrder>, + color_scheme: ColorScheme, + default_color_scheme: ColorScheme, ) -> String { if let Some(method) = sort_method { if let Some(order) = sort_order { @@ -193,10 +193,10 @@ fn parametrized_link( fn build_link( name: &str, title: &str, - sort_method: &Option<SortingMethod>, - sort_order: &Option<SortingOrder>, - color_scheme: &ColorScheme, - default_color_scheme: &ColorScheme, + sort_method: Option<SortingMethod>, + sort_order: Option<SortingOrder>, + color_scheme: ColorScheme, + default_color_scheme: ColorScheme, ) -> Markup { let mut link = format!("?sort={}&order=asc", name); let mut help = format!("Sort by {} in ascending order", name); @@ -231,17 +231,17 @@ fn build_link( /// Partial: row for an entry fn entry_row( entry: Entry, - sort_method: &Option<SortingMethod>, - sort_order: &Option<SortingOrder>, - color_scheme: &ColorScheme, - default_color_scheme: &ColorScheme, + sort_method: Option<SortingMethod>, + sort_order: Option<SortingOrder>, + color_scheme: ColorScheme, + default_color_scheme: ColorScheme, ) -> Markup { html! { tr { td { p { @if entry.is_dir() { - a.directory href=(parametrized_link(&entry.link, &sort_method, &sort_order, &color_scheme, &default_color_scheme)) { + a.directory href=(parametrized_link(&entry.link, sort_method, sort_order, color_scheme, default_color_scheme)) { (entry.name) "/" } } @else if entry.is_file() { @@ -256,7 +256,7 @@ fn entry_row( } } } @else if entry.is_symlink() { - a.symlink href=(parametrized_link(&entry.link, &sort_method, &sort_order, &color_scheme, &default_color_scheme)) { + a.symlink href=(parametrized_link(&entry.link, sort_method, sort_order, color_scheme, default_color_scheme)) { (entry.name) span.symlink-symbol { "⇢" } } } @@ -286,8 +286,8 @@ fn entry_row( } /// Partial: CSS -fn css(color_scheme: &ColorScheme) -> Markup { - let theme = color_scheme.clone().get_theme(); +fn css(color_scheme: ColorScheme) -> Markup { + let theme = color_scheme.get_theme(); let css = format!(" html {{ @@ -686,7 +686,7 @@ fn chevron_down() -> Markup { } /// Partial: page header -fn page_header(serve_path: &str, color_scheme: &ColorScheme, file_upload: bool) -> Markup { +fn page_header(serve_path: &str, color_scheme: ColorScheme, file_upload: bool) -> Markup { html! { (DOCTYPE) html { @@ -694,7 +694,7 @@ fn page_header(serve_path: &str, color_scheme: &ColorScheme, file_upload: bool) meta http-equiv="X-UA-Compatible" content="IE=edge"; meta name="viewport" content="width=device-width, initial-scale=1"; title { "Index of " (serve_path) } - style { (css(&color_scheme)) } + style { (css(color_scheme)) } @if file_upload { (PreEscaped(r#" <script> diff --git a/src/themes.rs b/src/themes.rs index a7b619e..49a1ad3 100644 --- a/src/themes.rs +++ b/src/themes.rs @@ -3,7 +3,7 @@ use structopt::clap::arg_enum; use strum_macros::EnumIter; arg_enum! { - #[derive(PartialEq, Deserialize, Clone, EnumIter)] + #[derive(PartialEq, Deserialize, Clone, EnumIter, Copy)] #[serde(rename_all = "lowercase")] pub enum ColorScheme { Archlinux, @@ -17,8 +17,8 @@ impl ColorScheme { /// Returns the URL-compatible name of a color scheme /// This must correspond to the name of the variant, in lowercase /// See https://github.com/svenstaro/miniserve/pull/55 for explanations - pub fn to_slug(&self) -> String { - match &self { + pub fn to_slug(self) -> String { + match self { ColorScheme::Archlinux => "archlinux", ColorScheme::Zenburn => "zenburn", ColorScheme::Monokai => "monokai", @@ -28,8 +28,8 @@ impl ColorScheme { } /// Returns wether a color scheme is dark - pub fn is_dark(&self) -> bool { - match &self { + pub fn is_dark(self) -> bool { + match self { ColorScheme::Archlinux => true, ColorScheme::Zenburn => true, ColorScheme::Monokai => true, |