From a715a8ed5dbd72deea53b86c61efb505c605d435 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Tue, 12 May 2026 16:17:21 +0200 Subject: [PATCH] head: remove Default trait from HeadOptions --- src/uu/head/src/head.rs | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/uu/head/src/head.rs b/src/uu/head/src/head.rs index 896e0c923e1..3c1fb5b0e2d 100644 --- a/src/uu/head/src/head.rs +++ b/src/uu/head/src/head.rs @@ -127,7 +127,7 @@ fn arg_iterate<'a>( } } -#[derive(Debug, PartialEq, Default)] +#[derive(Debug, PartialEq)] struct HeadOptions { pub quiet: bool, pub verbose: bool, @@ -138,20 +138,17 @@ struct HeadOptions { } impl HeadOptions { - ///Construct options from matches + /// Construct options from matches pub fn get_from(matches: &ArgMatches) -> Result { - let mut options = Self::default(); - - options.quiet = matches.get_flag(options::QUIET); - options.verbose = matches.get_flag(options::VERBOSE); - options.line_ending = LineEnding::from_zero_flag(matches.get_flag(options::ZERO)); - options.presume_input_pipe = matches.get_flag(options::PRESUME_INPUT_PIPE); - - options.mode = Mode::from(matches)?; - - options.files = match matches.get_many::(options::FILES) { - Some(v) => v.cloned().collect(), - None => vec![OsString::from("-")], + let options = Self { + quiet: matches.get_flag(options::QUIET), + verbose: matches.get_flag(options::VERBOSE), + line_ending: LineEnding::from_zero_flag(matches.get_flag(options::ZERO)), + presume_input_pipe: matches.get_flag(options::PRESUME_INPUT_PIPE), + mode: Mode::from(matches)?, + files: matches + .get_many::(options::FILES) + .map_or_else(|| vec![OsString::from("-")], |v| v.cloned().collect()), }; Ok(options) @@ -581,13 +578,14 @@ mod tests { #[test] fn test_options_correct_defaults() { - let opts = HeadOptions::default(); + let matches = uu_app().get_matches(); + let opts = HeadOptions::get_from(&matches).unwrap(); assert!(!opts.verbose); assert!(!opts.quiet); assert_eq!(opts.line_ending, LineEnding::Newline); assert_eq!(opts.mode, Mode::FirstLines(10)); - assert!(opts.files.is_empty()); + assert_eq!(opts.files, vec!(OsString::from("-"))); } fn arg_outputs(src: &str) -> Result {