diff --git a/display/printf.rs b/display/printf.rs index 32e8c33d..ff415dc2 100644 --- a/display/printf.rs +++ b/display/printf.rs @@ -31,17 +31,17 @@ struct ConvSpec { zero_pad: bool, } -impl ConvSpec { - fn new() -> ConvSpec { - ConvSpec { +impl Default for ConvSpec { + fn default() -> Self { + Self { spec: ' ', - width: None, - precision: None, - left_justify: false, - sign: false, - space: false, - alt_form: false, - zero_pad: false, + width: Default::default(), + precision: Default::default(), + left_justify: Default::default(), + sign: Default::default(), + space: Default::default(), + alt_form: Default::default(), + zero_pad: Default::default(), } } } @@ -81,7 +81,7 @@ fn escaped_char(c: char) -> char { fn tokenize_format_str(format: &str) -> Vec { let mut tokens: Vec = Vec::new(); let mut literal = String::with_capacity(format.len()); - let mut conversion = ConvSpec::new(); + let mut conversion = ConvSpec::default(); let mut width = String::with_capacity(8); let mut precision = String::with_capacity(8); let mut state = ParseState::Literal; @@ -164,7 +164,7 @@ fn tokenize_format_str(format: &str) -> Vec { ParseState::Specifier => { conversion.spec = c; tokens.push(Token::Conversion(conversion)); - conversion = ConvSpec::new(); + conversion = ConvSpec::default(); state = ParseState::Literal; done_with_char = true; } diff --git a/file/dd.rs b/file/dd.rs index 26a2505f..8f5797ac 100644 --- a/file/dd.rs +++ b/file/dd.rs @@ -102,20 +102,20 @@ struct Config { notrunc: bool, } -impl Config { - fn new() -> Config { - Config { - ifile: String::new(), - ofile: String::new(), +impl Default for Config { + fn default() -> Self { + Self { + ifile: Default::default(), + ofile: Default::default(), ibs: DEF_BLOCK_SIZE, obs: DEF_BLOCK_SIZE, - cbs: 0, - seek: 0, - skip: 0, - count: 0, - conversions: Vec::new(), - noerror: false, - notrunc: false, + cbs: Default::default(), + seek: Default::default(), + skip: Default::default(), + count: Default::default(), + conversions: Default::default(), + noerror: Default::default(), + notrunc: Default::default(), } } } @@ -341,7 +341,7 @@ fn parse_block_size(s: &str) -> Result> { } fn parse_cmdline(args: &[String]) -> Result> { - let mut config = Config::new(); + let mut config = Config::default(); for arg in args { // Split arg into option and argument diff --git a/file/tee.rs b/file/tee.rs index 4ef22ed8..019fb58b 100644 --- a/file/tee.rs +++ b/file/tee.rs @@ -32,18 +32,11 @@ struct TeeFile { f: File, } +#[derive(Default)] struct TeeInfo { outputs: Vec, } -impl TeeInfo { - fn new() -> TeeInfo { - TeeInfo { - outputs: Vec::new(), - } - } -} - fn open_outputs(args: &Args, info: &mut TeeInfo) -> io::Result<()> { for filename in &args.files { let f_res = OpenOptions::new() @@ -113,7 +106,7 @@ fn main() -> Result<(), Box> { } } - let mut state = TeeInfo::new(); + let mut state = TeeInfo::default(); open_outputs(&args, &mut state)?; tee_stdin(&mut state)?; diff --git a/plib/src/modestr.rs b/plib/src/modestr.rs index 11e13dae..9efe1ed1 100644 --- a/plib/src/modestr.rs +++ b/plib/src/modestr.rs @@ -12,14 +12,15 @@ use libc::{ S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR, }; -#[derive(PartialEq, Debug)] +#[derive(PartialEq, Debug, Default)] pub enum ChmodActionOp { Add, Remove, + #[default] Set, } -#[derive(Debug)] +#[derive(Debug, Default)] pub struct ChmodAction { pub op: ChmodActionOp, @@ -37,25 +38,7 @@ pub struct ChmodAction { dirty: bool, } -impl ChmodAction { - pub fn new() -> ChmodAction { - ChmodAction { - op: ChmodActionOp::Set, - copy_user: false, - copy_group: false, - copy_others: false, - read: false, - write: false, - execute: false, - execute_dir: false, - setuid: false, - sticky: false, - dirty: false, - } - } -} - -#[derive(Debug)] +#[derive(Debug, Default)] pub struct ChmodClause { // wholist pub user: bool, @@ -68,39 +51,20 @@ pub struct ChmodClause { dirty: bool, } -impl ChmodClause { - pub fn new() -> ChmodClause { - ChmodClause { - user: false, - group: false, - others: false, - actions: Vec::new(), - dirty: false, - } - } -} - -#[derive(Debug)] +#[derive(Debug, Default)] pub struct ChmodSymbolic { pub clauses: Vec, } -impl ChmodSymbolic { - pub fn new() -> ChmodSymbolic { - ChmodSymbolic { - clauses: Vec::new(), - } - } -} - #[derive(Debug)] pub enum ChmodMode { Absolute(u32), Symbolic(ChmodSymbolic), } -#[derive(Debug)] +#[derive(Debug, Default)] enum ParseState { + #[default] Wholist, Actionlist, ListOrCopy, @@ -114,11 +78,11 @@ pub fn parse(mode: &str) -> Result { return Ok(ChmodMode::Absolute(m)); } - let mut state = ParseState::Wholist; let mut done_with_char; - let mut symbolic = ChmodSymbolic::new(); - let mut clause = ChmodClause::new(); - let mut action = ChmodAction::new(); + let mut state = ParseState::default(); + let mut symbolic = ChmodSymbolic::default(); + let mut clause = ChmodClause::default(); + let mut action = ChmodAction::default(); for c in mode.chars() { done_with_char = false; @@ -156,7 +120,7 @@ pub fn parse(mode: &str) -> Result { action.dirty = false; done_with_char = false; symbolic.clauses.push(clause); - clause = ChmodClause::new(); + clause = ChmodClause::default(); state = ParseState::NextClause; } } @@ -177,7 +141,7 @@ pub fn parse(mode: &str) -> Result { done_with_char = false; clause.actions.push(action); clause.dirty = true; - action = ChmodAction::new(); + action = ChmodAction::default(); state = ParseState::Actionlist; } } @@ -196,7 +160,7 @@ pub fn parse(mode: &str) -> Result { done_with_char = false; clause.actions.push(action); clause.dirty = true; - action = ChmodAction::new(); + action = ChmodAction::default(); state = ParseState::Actionlist; } } diff --git a/text/asa.rs b/text/asa.rs index 6225cc80..6ebbb428 100644 --- a/text/asa.rs +++ b/text/asa.rs @@ -30,14 +30,16 @@ struct AsaState { lines: Vec, } -impl AsaState { - fn new() -> AsaState { - AsaState { +impl Default for AsaState { + fn default() -> Self { + Self { first_line: true, - lines: Vec::new(), + lines: Default::default(), } } +} +impl AsaState { fn push(&mut self, line: &str) { self.lines.push(line.to_string()); if self.first_line { @@ -69,7 +71,7 @@ impl AsaState { fn asa_file(pathname: &PathBuf) -> io::Result<()> { let mut reader = plib::io::input_reader(pathname, false)?; let mut line_no: usize = 0; - let mut state = AsaState::new(); + let mut state = AsaState::default(); loop { line_no += 1; diff --git a/text/sort.rs b/text/sort.rs index c8f21cc3..2da87d8a 100644 --- a/text/sort.rs +++ b/text/sort.rs @@ -121,7 +121,7 @@ impl Args { } /// A struct representing a range field with various sorting and comparison options. -#[derive(Clone)] +#[derive(Clone, Default)] struct RangeField { /// The number of the field to be considered in the range. field_number: usize, @@ -149,21 +149,6 @@ struct RangeField { dictionary_order: bool, } -impl RangeField { - fn new() -> RangeField { - Self { - field_number: 0, - first_character: 0, - numeric_sort: false, - ignore_leading_blanks: false, - reverse: false, - ignore_nonprintable: false, - fold_case: false, - dictionary_order: false, - } - } -} - /// Updates two RangeField objects based on their comparison options. /// /// This function takes two RangeField objects, compares their fields, and updates the fields @@ -744,7 +729,7 @@ fn create_ranges( let mut key_ranges = key_ranges.iter(); // Convert key ranges to numeric representations - let mut ranges: (RangeField, Option) = (RangeField::new(), None); + let mut ranges: (RangeField, Option) = (RangeField::default(), None); ranges.0 = { let key_range = key_ranges.next().unwrap().to_string(); diff --git a/tree/ls_util/entry.rs b/tree/ls_util/entry.rs index b97d6c36..7f612f02 100644 --- a/tree/ls_util/entry.rs +++ b/tree/ls_util/entry.rs @@ -464,7 +464,8 @@ impl Entry { } } -// Used for padding in long format +/// Used for padding in long format +#[derive(Default)] pub struct LongFormatPadding { pub blocks_str_width: usize, pub inode_str_width: usize, @@ -477,22 +478,6 @@ pub struct LongFormatPadding { pub time_width: usize, } -impl Default for LongFormatPadding { - fn default() -> Self { - Self { - blocks_str_width: 0, - inode_str_width: 0, - num_links_width: 0, - owner_name_width: 0, - group_name_width: 0, - file_size_width: 0, - device_id_major_width: 0, - device_id_minor_width: 0, - time_width: 0, - } - } -} - impl LongFormatPadding { /// Get the maximum padding for each field. pub fn update_maximum(&mut self, other: &LongFormatPadding) { @@ -525,7 +510,8 @@ impl LongFormatPadding { } } -// Used for padding in multi-column format +/// Used for padding in multi-column format +#[derive(Default)] pub struct MultiColumnPadding { pub total_width: usize, pub inode_str_width: usize, @@ -533,17 +519,6 @@ pub struct MultiColumnPadding { pub file_name_width: usize, } -impl Default for MultiColumnPadding { - fn default() -> Self { - Self { - total_width: 0, - inode_str_width: 0, - blocks_str_width: 0, - file_name_width: 0, - } - } -} - impl MultiColumnPadding { pub fn update_maximum(&mut self, other: &MultiColumnPadding) { self.total_width = usize::max(self.total_width, other.total_width); diff --git a/users/talk.rs b/users/talk.rs index 713e1633..8480a35e 100644 --- a/users/talk.rs +++ b/users/talk.rs @@ -207,6 +207,7 @@ pub struct Osockaddr { pub sa_data: [u8; 14], } +#[allow(clippy::derivable_impls)] impl Default for Osockaddr { fn default() -> Self { Osockaddr {