diff options
author | boasting-squirrel <boasting.squirrel@gmail.com> | 2019-04-07 11:15:48 +0000 |
---|---|---|
committer | boasting-squirrel <boasting.squirrel@gmail.com> | 2019-04-07 11:15:48 +0000 |
commit | 2d717e4d0e78bd2132886a3339804f05f816f67a (patch) | |
tree | 35565ca622bfc87e72b69ed62a0f4dc914a697ba /src/listing.rs | |
parent | Use strum_macros::EnumIter instead of manually listing Enum variants (diff) | |
download | miniserve-2d717e4d0e78bd2132886a3339804f05f816f67a.tar.gz miniserve-2d717e4d0e78bd2132886a3339804f05f816f67a.zip |
Use strum on Enums to reduce boilerplate
Diffstat (limited to 'src/listing.rs')
-rw-r--r-- | src/listing.rs | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/src/listing.rs b/src/listing.rs index b7070f3..5096c73 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -7,6 +7,7 @@ use serde::Deserialize; use std::io; use std::path::Path; use std::time::SystemTime; +use strum_macros::{Display, EnumString}; use crate::archive; use crate::errors; @@ -14,7 +15,7 @@ use crate::renderer; use crate::themes; /// Query parameters -#[derive(Debug, Deserialize)] +#[derive(Deserialize)] struct QueryParameters { sort: Option<SortingMethod>, order: Option<SortingOrder>, @@ -23,52 +24,36 @@ struct QueryParameters { } /// Available sorting methods -#[derive(Debug, Deserialize, Clone)] +#[derive(Deserialize, Clone, EnumString, Display)] #[serde(rename_all = "lowercase")] pub enum SortingMethod { /// Sort by name + #[strum(serialize = "name")] Name, /// Sort by size + #[strum(serialize = "size")] Size, /// Sort by last modification date (natural sort: follows alphanumerical order) + #[strum(serialize = "date")] Date, } -impl SortingMethod { - pub fn to_string(&self) -> String { - match &self { - SortingMethod::Name => "name", - SortingMethod::Size => "size", - SortingMethod::Date => "date", - } - .to_string() - } -} - /// Available sorting orders -#[derive(Debug, Deserialize, Clone)] +#[derive(Deserialize, Clone, EnumString, Display)] pub enum SortingOrder { /// Ascending order #[serde(alias = "asc")] + #[strum(serialize = "asc")] Ascending, /// Descending order #[serde(alias = "desc")] + #[strum(serialize = "desc")] Descending, } -impl SortingOrder { - pub fn to_string(&self) -> String { - match &self { - SortingOrder::Ascending => "asc", - SortingOrder::Descending => "desc", - } - .to_string() - } -} - #[derive(PartialEq)] /// Possible entry types pub enum EntryType { |