summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarawit Rakket <narawitrakket@hotmail.com>2022-08-07 11:32:56 +0700
committerAbin Simon <abinsimon10@gmail.com>2022-08-12 18:06:57 +0530
commit8d08fb63d15fbbc9655d58b4ce0eb06d55cee9cb (patch)
tree13bbf448db8ab17fb0f1029f8aeed9a8df79a4ac
parentd05b2acd206334fb7413e833a8462b96958c682d (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.rs19
-rw-r--r--src/flags/date.rs10
-rw-r--r--src/flags/display.rs10
-rw-r--r--src/flags/hyperlink.rs10
-rw-r--r--src/flags/icons.rs20
-rw-r--r--src/flags/layout.rs10
-rw-r--r--src/flags/permission.rs10
-rw-r--r--src/flags/size.rs10
-rw-r--r--src/flags/sorting.rs30
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;