diff options
author | Narawit Rakket <narawitrakket@hotmail.com> | 2022-08-07 11:32:56 +0700 |
---|---|---|
committer | Abin Simon <abinsimon10@gmail.com> | 2022-08-12 18:06:57 +0530 |
commit | 8d08fb63d15fbbc9655d58b4ce0eb06d55cee9cb (patch) | |
tree | 13bbf448db8ab17fb0f1029f8aeed9a8df79a4ac | |
parent | d05b2acd206334fb7413e833a8462b96958c682d (diff) |
refactor: use default attribute for enum
Use the new feature from Rust 1.62 to make code more concise
https://blog.rust-lang.org/2022/06/30/Rust-1.62.0.html#default-enum-variants
-rw-r--r-- | src/flags/color.rs | 19 | ||||
-rw-r--r-- | src/flags/date.rs | 10 | ||||
-rw-r--r-- | src/flags/display.rs | 10 | ||||
-rw-r--r-- | src/flags/hyperlink.rs | 10 | ||||
-rw-r--r-- | src/flags/icons.rs | 20 | ||||
-rw-r--r-- | src/flags/layout.rs | 10 | ||||
-rw-r--r-- | src/flags/permission.rs | 10 | ||||
-rw-r--r-- | src/flags/size.rs | 10 | ||||
-rw-r--r-- | src/flags/sorting.rs | 30 |
9 files changed, 26 insertions, 103 deletions
diff --git a/src/flags/color.rs b/src/flags/color.rs index ac01491..3e7a127 100644 --- a/src/flags/color.rs +++ b/src/flags/color.rs @@ -33,9 +33,10 @@ impl Color { /// ThemeOption could be one of the following: /// Custom(*.yaml): use the YAML theme file as theme file /// if error happened, use the default theme -#[derive(PartialEq, Eq, Debug, Clone)] +#[derive(PartialEq, Eq, Debug, Clone, Default)] pub enum ThemeOption { NoColor, + #[default] Default, #[allow(dead_code)] NoLscolors, @@ -56,12 +57,6 @@ impl ThemeOption { } } -impl Default for ThemeOption { - fn default() -> Self { - ThemeOption::Default - } -} - impl<'de> de::Deserialize<'de> for ThemeOption { fn deserialize<D>(deserializer: D) -> Result<ThemeOption, D::Error> where @@ -92,10 +87,11 @@ impl<'de> de::Deserialize<'de> for ThemeOption { } /// The flag showing when to use colors in the output. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum ColorOption { Always, + #[default] Auto, Never, } @@ -150,13 +146,6 @@ impl Configurable<Self> for ColorOption { } } -/// The default value for `ColorOption` is [ColorOption::Auto]. -impl Default for ColorOption { - fn default() -> Self { - Self::Auto - } -} - #[cfg(test)] mod test_color_option { use super::ColorOption; diff --git a/src/flags/date.rs b/src/flags/date.rs index 29d70a6..e4e0a8e 100644 --- a/src/flags/date.rs +++ b/src/flags/date.rs @@ -10,8 +10,9 @@ use crate::print_error; use clap::ArgMatches; /// The flag showing which kind of time stamps to display. -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq, Default)] pub enum DateFlag { + #[default] Date, Relative, Iso, @@ -93,13 +94,6 @@ impl Configurable<Self> for DateFlag { } } -/// The default value for `DateFlag` is [DateFlag::Date]. -impl Default for DateFlag { - fn default() -> Self { - Self::Date - } -} - #[cfg(test)] mod test { use super::DateFlag; diff --git a/src/flags/display.rs b/src/flags/display.rs index 3ebd53b..96850db 100644 --- a/src/flags/display.rs +++ b/src/flags/display.rs @@ -9,12 +9,13 @@ use clap::ArgMatches; use serde::Deserialize; /// The flag showing which file system nodes to display. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum Display { All, AlmostAll, DirectoryOnly, + #[default] VisibleOnly, } @@ -47,13 +48,6 @@ impl Configurable<Self> for Display { } } -/// The default value for `Display` is [Display::VisibleOnly]. -impl Default for Display { - fn default() -> Self { - Display::VisibleOnly - } -} - #[cfg(test)] mod test { use super::Display; diff --git a/src/flags/hyperlink.rs b/src/flags/hyperlink.rs index 04d58bc..bee8ad7 100644 --- a/src/flags/hyperlink.rs +++ b/src/flags/hyperlink.rs @@ -9,11 +9,12 @@ use clap::ArgMatches; use serde::Deserialize; /// The flag showing when to use hyperlink in the output. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum HyperlinkOption { Always, Auto, + #[default] Never, } @@ -63,13 +64,6 @@ impl Configurable<Self> for HyperlinkOption { } } -/// The default value for the `HyperlinkOption` is [HyperlinkOption::Auto]. -impl Default for HyperlinkOption { - fn default() -> Self { - Self::Never - } -} - #[cfg(test)] mod test_hyperlink_option { use super::HyperlinkOption; diff --git a/src/flags/icons.rs b/src/flags/icons.rs index b481e91..481d374 100644 --- a/src/flags/icons.rs +++ b/src/flags/icons.rs @@ -37,10 +37,11 @@ impl Icons { } /// The flag showing when to use icons in the output. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum IconOption { Always, + #[default] Auto, Never, } @@ -88,18 +89,12 @@ impl Configurable<Self> for IconOption { } } -/// The default value for the `IconOption` is [IconOption::Auto]. -impl Default for IconOption { - fn default() -> Self { - Self::Auto - } -} - /// The flag showing which icon theme to use. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum IconTheme { Unicode, + #[default] Fancy, } @@ -140,13 +135,6 @@ impl Configurable<Self> for IconTheme { } } -/// The default value for `IconTheme` is [IconTheme::Fancy]. -impl Default for IconTheme { - fn default() -> Self { - Self::Fancy - } -} - #[derive(Clone, Debug, PartialEq, Eq, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct IconSeparator(pub String); diff --git a/src/flags/layout.rs b/src/flags/layout.rs index f43f822..ecddb93 100644 --- a/src/flags/layout.rs +++ b/src/flags/layout.rs @@ -9,9 +9,10 @@ use clap::ArgMatches; use serde::Deserialize; /// The flag showing which output layout to print. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "lowercase")] pub enum Layout { + #[default] Grid, Tree, OneLine, @@ -50,13 +51,6 @@ impl Configurable<Layout> for Layout { } } -/// The default value for `Layout` is [Layout::Grid]. -impl Default for Layout { - fn default() -> Self { - Self::Grid - } -} - #[cfg(test)] mod test { use super::Layout; diff --git a/src/flags/permission.rs b/src/flags/permission.rs index 7f9838f..8435828 100644 --- a/src/flags/permission.rs +++ b/src/flags/permission.rs @@ -9,10 +9,11 @@ use clap::ArgMatches; use serde::Deserialize; /// The flag showing which file permissions units to use. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum PermissionFlag { /// The variant to show file permissions in rwx format + #[default] Rwx, /// The variant to show file permissions in octal format Octal, @@ -64,13 +65,6 @@ impl Configurable<Self> for PermissionFlag { } } -/// The default value for `PermissionFlag` is [PermissionFlag::Default]. -impl Default for PermissionFlag { - fn default() -> Self { - Self::Rwx - } -} - #[cfg(test)] mod test { use super::PermissionFlag; diff --git a/src/flags/size.rs b/src/flags/size.rs index 054098e..62721f5 100644 --- a/src/flags/size.rs +++ b/src/flags/size.rs @@ -9,10 +9,11 @@ use clap::ArgMatches; use serde::Deserialize; /// The flag showing which file size units to use. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum SizeFlag { /// The variant to show file size with SI unit prefix and a B for bytes. + #[default] Default, /// The variant to show file size with only the SI unit prefix. Short, @@ -62,13 +63,6 @@ impl Configurable<Self> for SizeFlag { } } -/// The default value for `SizeFlag` is [SizeFlag::Default]. -impl Default for SizeFlag { - fn default() -> Self { - Self::Default - } -} - #[cfg(test)] mod test { use super::SizeFlag; diff --git a/src/flags/sorting.rs b/src/flags/sorting.rs index 10864da..76b0b47 100644 --- a/src/flags/sorting.rs +++ b/src/flags/sorting.rs @@ -34,11 +34,12 @@ impl Sorting { } /// The flag showing which column to use for sorting. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum SortColumn { None, Extension, + #[default] Name, Time, Size, @@ -78,16 +79,10 @@ impl Configurable<Self> for SortColumn { } } -/// The default value for `SortColumn` is [SortColumn::Name]. -impl Default for SortColumn { - fn default() -> Self { - Self::Name - } -} - /// The flag showing which sort order to use. -#[derive(Clone, Debug, Copy, PartialEq, Eq)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Default)] pub enum SortOrder { + #[default] Default, Reverse, } @@ -120,17 +115,11 @@ impl Configurable<Self> for SortOrder { } } -/// The default value for `SortOrder` is [SortOrder::Default]. -impl Default for SortOrder { - fn default() -> Self { - Self::Default - } -} - /// The flag showing where to place directories. -#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize)] +#[derive(Clone, Debug, Copy, PartialEq, Eq, Deserialize, Default)] #[serde(rename_all = "kebab-case")] pub enum DirGrouping { + #[default] None, First, Last, @@ -188,13 +177,6 @@ impl Configurable<Self> for DirGrouping { } } -/// The default value for `DirGrouping` is [DirGrouping::None]. -impl Default for DirGrouping { - fn default() -> Self { - Self::None - } -} - #[cfg(test)] mod test_sort_column { use super::SortColumn; |