Просмотр исходного кода

Rearrange trait definitions in options

This puts the impls for the structs defined in the module first, then impls for the structs defined in the columns module second.
Ben S 10 лет назад
Родитель
Сommit
ceae7e747c
1 измененных файлов с 91 добавлено и 90 удалено
  1. 91 90
      src/options.rs

+ 91 - 90
src/options.rs

@@ -266,20 +266,6 @@ trait OptionSet: Sized {
     fn deduce(matches: &getopts::Matches) -> Result<Self, Misfire>;
     fn deduce(matches: &getopts::Matches) -> Result<Self, Misfire>;
 }
 }
 
 
-impl OptionSet for Columns {
-    fn deduce(matches: &getopts::Matches) -> Result<Columns, Misfire> {
-        Ok(Columns {
-            size_format: try!(SizeFormat::deduce(matches)),
-            time_types:  try!(TimeTypes::deduce(matches)),
-            inode:  matches.opt_present("inode"),
-            links:  matches.opt_present("links"),
-            blocks: matches.opt_present("blocks"),
-            group:  matches.opt_present("group"),
-            git:    cfg!(feature="git") && matches.opt_present("git"),
-        })
-    }
-}
-
 
 
 /// The **file filter** processes a vector of files before outputting them,
 /// The **file filter** processes a vector of files before outputting them,
 /// filtering and sorting the files depending on the user’s command-line
 /// filtering and sorting the files depending on the user’s command-line
@@ -347,6 +333,82 @@ impl FileFilter {
 }
 }
 
 
 
 
+/// What to do when encountering a directory?
+#[derive(PartialEq, Debug, Copy, Clone)]
+pub enum DirAction {
+    AsFile,
+    List,
+    Recurse(RecurseOptions),
+}
+
+impl DirAction {
+    pub fn deduce(matches: &getopts::Matches) -> Result<DirAction, Misfire> {
+        let recurse = matches.opt_present("recurse");
+        let list    = matches.opt_present("list-dirs");
+        let tree    = matches.opt_present("tree");
+
+        match (recurse, list, tree) {
+            (true,  true,  _    )  => Err(Misfire::Conflict("recurse", "list-dirs")),
+            (_,     true,  true )  => Err(Misfire::Conflict("tree", "list-dirs")),
+            (true,  false, false)  => Ok(DirAction::Recurse(try!(RecurseOptions::deduce(matches, false)))),
+            (_   ,  _,     true )  => Ok(DirAction::Recurse(try!(RecurseOptions::deduce(matches, true)))),
+            (false, true,  _    )  => Ok(DirAction::AsFile),
+            (false, false, _    )  => Ok(DirAction::List),
+        }
+    }
+
+    pub fn recurse_options(&self) -> Option<RecurseOptions> {
+        match *self {
+            DirAction::Recurse(opts) => Some(opts),
+            _ => None,
+        }
+    }
+
+    pub fn treat_dirs_as_files(&self) -> bool {
+        match *self {
+            DirAction::AsFile => true,
+            DirAction::Recurse(RecurseOptions { tree, .. }) => tree,
+            _ => false,
+        }
+    }
+}
+
+
+#[derive(PartialEq, Debug, Copy, Clone)]
+pub struct RecurseOptions {
+    pub tree:      bool,
+    pub max_depth: Option<usize>,
+}
+
+impl RecurseOptions {
+    pub fn deduce(matches: &getopts::Matches, tree: bool) -> Result<RecurseOptions, Misfire> {
+        let max_depth = if let Some(level) = matches.opt_str("level") {
+            match level.parse() {
+                Ok(l)  => Some(l),
+                Err(e) => return Err(Misfire::FailedParse(e)),
+            }
+        }
+        else {
+            None
+        };
+
+        Ok(RecurseOptions {
+            tree: tree,
+            max_depth: max_depth,
+        })
+    }
+
+    pub fn is_too_deep(&self, depth: usize) -> bool {
+        match self.max_depth {
+            None    => false,
+            Some(d) => {
+                d <= depth
+            }
+        }
+    }
+}
+
+
 /// User-supplied field to sort by.
 /// User-supplied field to sort by.
 #[derive(PartialEq, Debug, Copy, Clone)]
 #[derive(PartialEq, Debug, Copy, Clone)]
 pub enum SortField {
 pub enum SortField {
@@ -382,6 +444,21 @@ impl OptionSet for SortField {
 }
 }
 
 
 
 
+impl OptionSet for Columns {
+    fn deduce(matches: &getopts::Matches) -> Result<Columns, Misfire> {
+        Ok(Columns {
+            size_format: try!(SizeFormat::deduce(matches)),
+            time_types:  try!(TimeTypes::deduce(matches)),
+            inode:  matches.opt_present("inode"),
+            links:  matches.opt_present("links"),
+            blocks: matches.opt_present("blocks"),
+            group:  matches.opt_present("group"),
+            git:    cfg!(feature="git") && matches.opt_present("git"),
+        })
+    }
+}
+
+
 impl OptionSet for SizeFormat {
 impl OptionSet for SizeFormat {
 
 
     /// Determine which file size to use in the file size column based on
     /// Determine which file size to use in the file size column based on
@@ -454,82 +531,6 @@ impl OptionSet for TimeTypes {
 }
 }
 
 
 
 
-/// What to do when encountering a directory?
-#[derive(PartialEq, Debug, Copy, Clone)]
-pub enum DirAction {
-    AsFile,
-    List,
-    Recurse(RecurseOptions),
-}
-
-impl DirAction {
-    pub fn deduce(matches: &getopts::Matches) -> Result<DirAction, Misfire> {
-        let recurse = matches.opt_present("recurse");
-        let list    = matches.opt_present("list-dirs");
-        let tree    = matches.opt_present("tree");
-
-        match (recurse, list, tree) {
-            (true,  true,  _    )  => Err(Misfire::Conflict("recurse", "list-dirs")),
-            (_,     true,  true )  => Err(Misfire::Conflict("tree", "list-dirs")),
-            (true,  false, false)  => Ok(DirAction::Recurse(try!(RecurseOptions::deduce(matches, false)))),
-            (_   ,  _,     true )  => Ok(DirAction::Recurse(try!(RecurseOptions::deduce(matches, true)))),
-            (false, true,  _    )  => Ok(DirAction::AsFile),
-            (false, false, _    )  => Ok(DirAction::List),
-        }
-    }
-
-    pub fn recurse_options(&self) -> Option<RecurseOptions> {
-        match *self {
-            DirAction::Recurse(opts) => Some(opts),
-            _ => None,
-        }
-    }
-
-    pub fn treat_dirs_as_files(&self) -> bool {
-        match *self {
-            DirAction::AsFile => true,
-            DirAction::Recurse(RecurseOptions { tree, .. }) => tree,
-            _ => false,
-        }
-    }
-}
-
-
-#[derive(PartialEq, Debug, Copy, Clone)]
-pub struct RecurseOptions {
-    pub tree:      bool,
-    pub max_depth: Option<usize>,
-}
-
-impl RecurseOptions {
-    pub fn deduce(matches: &getopts::Matches, tree: bool) -> Result<RecurseOptions, Misfire> {
-        let max_depth = if let Some(level) = matches.opt_str("level") {
-            match level.parse() {
-                Ok(l)  => Some(l),
-                Err(e) => return Err(Misfire::FailedParse(e)),
-            }
-        }
-        else {
-            None
-        };
-
-        Ok(RecurseOptions {
-            tree: tree,
-            max_depth: max_depth,
-        })
-    }
-
-    pub fn is_too_deep(&self, depth: usize) -> bool {
-        match self.max_depth {
-            None    => false,
-            Some(d) => {
-                d <= depth
-            }
-        }
-    }
-}
-
-
 /// One of these things could happen instead of listing files.
 /// One of these things could happen instead of listing files.
 #[derive(PartialEq, Debug)]
 #[derive(PartialEq, Debug)]
 pub enum Misfire {
 pub enum Misfire {