diff --git a/examples/search_errors.rs b/examples/search_errors.rs index 08a6b18a..7d10d142 100644 --- a/examples/search_errors.rs +++ b/examples/search_errors.rs @@ -7,6 +7,7 @@ use calamine::{open_workbook_auto, Data, Error, Reader}; use glob::{glob, GlobError, GlobResult}; #[derive(Debug)] +#[allow(dead_code)] enum FileStatus { VbaError(Error), RangeError(Error), @@ -77,15 +78,7 @@ fn run(f: GlobResult) -> Result<(PathBuf, Option, usize), FileStatus> { let range = xl.worksheet_range(&s).map_err(FileStatus::RangeError)?; cell_errors += range .rows() - .flat_map(|r| { - r.iter().filter(|c| { - if let Data::Error(_) = **c { - true - } else { - false - } - }) - }) + .flat_map(|r| r.iter().filter(|c| matches!(**c, Data::Error(_)))) .count(); } diff --git a/src/auto.rs b/src/auto.rs index e2dad5d9..a7cb652e 100644 --- a/src/auto.rs +++ b/src/auto.rs @@ -61,16 +61,16 @@ where RS: std::io::Read + std::io::Seek + Clone, { if let Ok(ret) = open_workbook_from_rs::, RS>(data.clone()) { - return Ok(Sheets::Xls(ret)); + Ok(Sheets::Xls(ret)) } else if let Ok(ret) = open_workbook_from_rs::, RS>(data.clone()) { - return Ok(Sheets::Xlsx(ret)); + Ok(Sheets::Xlsx(ret)) } else if let Ok(ret) = open_workbook_from_rs::, RS>(data.clone()) { - return Ok(Sheets::Xlsb(ret)); + Ok(Sheets::Xlsb(ret)) } else if let Ok(ret) = open_workbook_from_rs::, RS>(data) { - return Ok(Sheets::Ods(ret)); + Ok(Sheets::Ods(ret)) } else { - return Err(Error::Msg("Cannot detect file format")); - }; + Err(Error::Msg("Cannot detect file format")) + } } impl Reader for Sheets diff --git a/src/datatype.rs b/src/datatype.rs index fd9b5fb5..31d594ed 100644 --- a/src/datatype.rs +++ b/src/datatype.rs @@ -172,10 +172,7 @@ impl DataType for Data { impl PartialEq<&str> for Data { fn eq(&self, other: &&str) -> bool { - match *self { - Data::String(ref s) if s == other => true, - _ => false, - } + matches!(*self, Data::String(ref s) if s == other) } } diff --git a/src/formats.rs b/src/formats.rs index 347fcb73..1917d17f 100644 --- a/src/formats.rs +++ b/src/formats.rs @@ -104,7 +104,7 @@ pub fn format_excel_i64(value: i64, format: Option<&CellFormat>, is_1904: bool) // convert f64 to date, if format == Date #[inline] -pub fn format_excel_f64_ref<'a>( +pub fn format_excel_f64_ref( value: f64, format: Option<&CellFormat>, is_1904: bool, diff --git a/src/lib.rs b/src/lib.rs index 96dc5609..343f57fa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -140,6 +140,7 @@ pub struct Dimensions { pub end: (u32, u32), } +#[allow(clippy::len_without_is_empty)] impl Dimensions { /// create dimensions info with start position and end position pub fn new(start: (u32, u32), end: (u32, u32)) -> Self { @@ -463,7 +464,9 @@ impl Range { let row = (c.pos.0 - row_start) as usize; let col = (c.pos.1 - col_start) as usize; let idx = row.saturating_mul(cols) + col; - v.get_mut(idx).map(|v| *v = c.val); + if let Some(v) = v.get_mut(idx) { + *v = c.val; + } } Range { start: (row_start, col_start), diff --git a/src/xls.rs b/src/xls.rs index f837bd79..e3d1436e 100644 --- a/src/xls.rs +++ b/src/xls.rs @@ -663,7 +663,7 @@ fn parse_merge_cells(r: &[u8], merge_cells: &mut Vec) -> Result<(), for i in 0..count { let offset: usize = (2 + i * 8).into(); - let rf = read_u16(&r[offset + 0..]); + let rf = read_u16(&r[offset..]); let rl = read_u16(&r[offset + 2..]); let cf = read_u16(&r[offset + 4..]); let cl = read_u16(&r[offset + 6..]); diff --git a/src/xlsb/cells_reader.rs b/src/xlsb/cells_reader.rs index 124bc5ca..e54ebc1a 100644 --- a/src/xlsb/cells_reader.rs +++ b/src/xlsb/cells_reader.rs @@ -92,7 +92,7 @@ impl<'a> XlsbCellsReader<'a> { let v = (v as f64) / 100.0; format_excel_f64_ref( v, - cell_format(&self.formats, &self.buf), + cell_format(self.formats, &self.buf), self.is_1904, ) } else { @@ -103,7 +103,7 @@ impl<'a> XlsbCellsReader<'a> { v[4..].copy_from_slice(&self.buf[8..12]); let v = read_f64(&v); let v = if d100 { v / 100.0 } else { v }; - format_excel_f64_ref(v, cell_format(&self.formats, &self.buf), self.is_1904) + format_excel_f64_ref(v, cell_format(self.formats, &self.buf), self.is_1904) } } 0x0003 => { @@ -124,7 +124,7 @@ impl<'a> XlsbCellsReader<'a> { 0x0004 | 0x000A => DataRef::Bool(self.buf[8] != 0), // BrtCellBool or BrtFmlaBool 0x0005 | 0x0009 => { let v = read_f64(&self.buf[8..16]); - format_excel_f64_ref(v, cell_format(&self.formats, &self.buf), self.is_1904) + format_excel_f64_ref(v, cell_format(self.formats, &self.buf), self.is_1904) } // BrtCellReal or BrtFmlaNum 0x0006 | 0x0008 => DataRef::String(wide_str(&self.buf[8..], &mut 0)?.into_owned()), // BrtCellSt or BrtFmlaString 0x0007 => { @@ -162,21 +162,21 @@ impl<'a> XlsbCellsReader<'a> { let formula = &self.buf[14 + cch * 2..]; let cce = read_u32(formula) as usize; let rgce = &formula[4..4 + cce]; - parse_formula(rgce, &self.extern_sheets, &self.metadata_names)? + parse_formula(rgce, self.extern_sheets, self.metadata_names)? } 0x0009 => { // BrtFmlaNum let formula = &self.buf[18..]; let cce = read_u32(formula) as usize; let rgce = &formula[4..4 + cce]; - parse_formula(rgce, &self.extern_sheets, &self.metadata_names)? + parse_formula(rgce, self.extern_sheets, self.metadata_names)? } 0x000A | 0x000B => { // BrtFmlaBool | BrtFmlaError let formula = &self.buf[11..]; let cce = read_u32(formula) as usize; let rgce = &formula[4..4 + cce]; - parse_formula(rgce, &self.extern_sheets, &self.metadata_names)? + parse_formula(rgce, self.extern_sheets, self.metadata_names)? } 0x0000 => { // BrtRowHdr diff --git a/src/xlsx/cells_reader.rs b/src/xlsx/cells_reader.rs index 6e68e337..3404d747 100644 --- a/src/xlsx/cells_reader.rs +++ b/src/xlsx/cells_reader.rs @@ -14,6 +14,8 @@ use crate::{ Cell, XlsxError, }; +type FormulaMap = HashMap<(u32, u32), (i64, i64)>; + /// An xlsx Cell Iterator pub struct XlsxCellReader<'a> { xml: XlReader<'a>, @@ -25,7 +27,7 @@ pub struct XlsxCellReader<'a> { col_index: u32, buf: Vec, cell_buf: Vec, - formulas: Vec)>>, + formulas: Vec>, } impl<'a> XlsxCellReader<'a> { @@ -173,98 +175,84 @@ impl<'a> XlsxCellReader<'a> { if let Some(f) = formula.borrow() { value = Some(f.clone()); } - match get_attribute(e.attributes(), QName(b"t")) { - Ok(Some(b"shared")) => { - // shared formula - let mut offset_map: HashMap<(u32, u32), (i64, i64)> = - HashMap::new(); - // shared index - let shared_index = - match get_attribute(e.attributes(), QName(b"si"))? { - Some(res) => match std::str::from_utf8(res) { - Ok(res) => match usize::from_str_radix(res, 10) - { - Ok(res) => res, - Err(e) => { - return Err(XlsxError::ParseInt(e)); - } - }, - Err(_) => { - return Err(XlsxError::Unexpected( - "si attribute must be a number", - )); + if let Ok(Some(b"shared")) = + get_attribute(e.attributes(), QName(b"t")) + { + // shared formula + let mut offset_map: HashMap<(u32, u32), (i64, i64)> = + HashMap::new(); + // shared index + let shared_index = + match get_attribute(e.attributes(), QName(b"si"))? { + Some(res) => match std::str::from_utf8(res) { + Ok(res) => match res.parse::() { + Ok(res) => res, + Err(e) => { + return Err(XlsxError::ParseInt(e)); } }, - None => { + Err(_) => { return Err(XlsxError::Unexpected( - "si attribute is mandatory if it is shared", + "si attribute must be a number", )); } - }; - // shared reference - match get_attribute(e.attributes(), QName(b"ref"))? { - Some(res) => { - // orignal reference formula - let reference = get_dimension(res)?; - if reference.start.0 != reference.end.0 { - for i in - 0..=(reference.end.0 - reference.start.0) - { - offset_map.insert( - ( - reference.start.0 + i, - reference.start.1, - ), - ( - (reference.start.0 as i64 - - pos.0 as i64 - + i as i64), - 0, - ), - ); - } - } else if reference.start.1 != reference.end.1 { - for i in - 0..=(reference.end.1 - reference.start.1) - { - offset_map.insert( - ( - reference.start.0, - reference.start.1 + i, - ), - ( - 0, - (reference.start.1 as i64 - - pos.1 as i64 - + i as i64), - ), - ); - } + }, + None => { + return Err(XlsxError::Unexpected( + "si attribute is mandatory if it is shared", + )); + } + }; + // shared reference + match get_attribute(e.attributes(), QName(b"ref"))? { + Some(res) => { + // orignal reference formula + let reference = get_dimension(res)?; + if reference.start.0 != reference.end.0 { + for i in 0..=(reference.end.0 - reference.start.0) { + offset_map.insert( + (reference.start.0 + i, reference.start.1), + ( + (reference.start.0 as i64 + - pos.0 as i64 + + i as i64), + 0, + ), + ); + } + } else if reference.start.1 != reference.end.1 { + for i in 0..=(reference.end.1 - reference.start.1) { + offset_map.insert( + (reference.start.0, reference.start.1 + i), + ( + 0, + (reference.start.1 as i64 + - pos.1 as i64 + + i as i64), + ), + ); } + } - if let Some(f) = formula.borrow() { - while self.formulas.len() < shared_index { - self.formulas.push(None); - } - self.formulas - .push(Some((f.clone(), offset_map))); + if let Some(f) = formula.borrow() { + while self.formulas.len() < shared_index { + self.formulas.push(None); } - value = formula; + self.formulas.push(Some((f.clone(), offset_map))); } - None => { - // calculated formula - if let Some(Some((f, offset_map))) = - self.formulas.get(shared_index) - { - if let Some(offset) = offset_map.get(&*&pos) { - value = - Some(replace_cell_names(f, *offset)?); - } + value = formula; + } + None => { + // calculated formula + if let Some(Some((f, offset_map))) = + self.formulas.get(shared_index) + { + if let Some(offset) = offset_map.get(&pos) { + value = Some(replace_cell_names(f, *offset)?); } } - }; - } - _ => {} + } + }; }; } Ok(Event::End(ref e)) if e.local_name().as_ref() == b"c" => break, @@ -333,10 +321,10 @@ fn read_v<'s>( ) -> Result, XlsxError> { let cell_format = match get_attribute(c_element.attributes(), QName(b"s")) { Ok(Some(style)) => { - let id: usize = match std::str::from_utf8(style).unwrap_or("0").parse() { - Ok(parsed_id) => parsed_id, - Err(_) => 0, - }; + let id: usize = std::str::from_utf8(style) + .unwrap_or("0") + .parse() + .unwrap_or(0); formats.get(id) } _ => Some(&CellFormat::Other), @@ -403,10 +391,7 @@ fn read_v<'s>( } } -fn read_formula<'s>( - xml: &mut XlReader<'_>, - e: &BytesStart<'_>, -) -> Result, XlsxError> { +fn read_formula(xml: &mut XlReader, e: &BytesStart) -> Result, XlsxError> { match e.local_name().as_ref() { b"is" | b"v" => { xml.read_to_end_into(e.name(), &mut Vec::new())?; diff --git a/src/xlsx/mod.rs b/src/xlsx/mod.rs index b82d0626..3a470829 100644 --- a/src/xlsx/mod.rs +++ b/src/xlsx/mod.rs @@ -648,7 +648,7 @@ impl Xlsx { for (sheet_name, sheet_path) in &self.sheets { // we need another mutable borrow of self.zip later so we enclose this borrow within braces { - let mut xml = match xml_reader(&mut self.zip, &sheet_path) { + let mut xml = match xml_reader(&mut self.zip, sheet_path) { None => continue, Some(x) => x?, }; @@ -657,8 +657,7 @@ impl Xlsx { buf.clear(); match xml.read_event_into(&mut buf) { Ok(Event::Start(ref e)) if e.local_name() == QName(b"mergeCell").into() => { - if let Some(attr) = get_attribute(e.attributes(), QName(b"ref").into())? - { + if let Some(attr) = get_attribute(e.attributes(), QName(b"ref"))? { let dismension = get_dimension(attr)?; regions.push(( sheet_name.to_string(), @@ -698,7 +697,7 @@ impl Xlsx { pub fn merged_regions_by_sheet(&self, name: &str) -> Vec<(&String, &String, &Dimensions)> { self.merged_regions() .iter() - .filter(|s| (**s).0 == name) + .filter(|s| s.0 == name) .map(|(name, sheet, region)| (name, sheet, region)) .collect() } @@ -837,7 +836,7 @@ impl Xlsx { let (_, path) = self .sheets .iter() - .find(|&&(ref n, _)| n == name) + .find(|&(n, _)| n == name) .ok_or_else(|| XlsxError::WorksheetNotFound(name.into()))?; let xml = xml_reader(&mut self.zip, path) .ok_or_else(|| XlsxError::WorksheetNotFound(name.into()))??; @@ -1233,12 +1232,7 @@ fn valid_cell_name(name: &[char]) -> bool { /// advance the cell name by the offset fn replace_cell(name: &[char], offset: (i64, i64)) -> Result, XlsxError> { - let cell = get_row_column( - name.into_iter() - .map(|c| *c as u8) - .collect::>() - .as_slice(), - )?; + let cell = get_row_column(name.iter().map(|c| *c as u8).collect::>().as_slice())?; coordinate_to_name(( (cell.0 as i64 + offset.0) as u32, (cell.1 as i64 + offset.1) as u32, diff --git a/tests/test.rs b/tests/test.rs index d66f68be..2116cb8e 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -37,7 +37,7 @@ fn issue_2() { setup(); let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue2").unwrap(); range_eq!( @@ -56,7 +56,7 @@ fn issue_3() { // test if sheet is resolved with only one row let path = format!("{}/tests/issue3.xlsm", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Sheet1").unwrap(); range_eq!(range, [[Float(1.), String("a".to_string())]]); @@ -68,7 +68,7 @@ fn issue_4() { // test if sheet is resolved with only one row let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue5").unwrap(); range_eq!(range, [[Float(0.5)]]); @@ -80,7 +80,7 @@ fn issue_6() { // test if sheet is resolved with only one row let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue6").unwrap(); range_eq!( @@ -99,7 +99,7 @@ fn error_file() { setup(); let path = format!("{}/tests/errors.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Feuil1").unwrap(); range_eq!( @@ -121,7 +121,7 @@ fn issue_9() { setup(); let path = format!("{}/tests/issue9.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Feuil1").unwrap(); range_eq!( @@ -140,7 +140,7 @@ fn vba() { setup(); let path = format!("{}/tests/vba.xlsm", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let mut vba = excel.vba_project().unwrap().unwrap(); assert_eq!( @@ -155,7 +155,7 @@ fn xlsb() { setup(); let path = format!("{}/tests/issues.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsb<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsb<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue2").unwrap(); range_eq!( @@ -173,7 +173,7 @@ fn xlsx() { setup(); let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue2").unwrap(); range_eq!( @@ -191,7 +191,7 @@ fn xls() { setup(); let path = format!("{}/tests/issues.xls", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xls<_> = open_workbook(&path).unwrap(); + let mut excel: Xls<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue2").unwrap(); range_eq!( @@ -214,7 +214,7 @@ fn issue_195() { "{}/JLCPCB SMT Parts Library(20210204).xls", env!("CARGO_MANIFEST_DIR") ); - let mut excel: Xls<_> = open_workbook(&path).expect("can't open wb"); + let mut excel: Xls<_> = open_workbook(path).expect("can't open wb"); let range = excel .worksheet_range("JLCPCB SMT Parts Library") .expect("error in wks range"); @@ -226,7 +226,7 @@ fn ods() { setup(); let path = format!("{}/tests/issues.ods", env!("CARGO_MANIFEST_DIR")); - let mut excel: Ods<_> = open_workbook(&path).unwrap(); + let mut excel: Ods<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("datatypes").unwrap(); range_eq!( @@ -260,7 +260,7 @@ fn ods_covered() { setup(); let path = format!("{}/tests/covered.ods", env!("CARGO_MANIFEST_DIR")); - let mut excel: Ods<_> = open_workbook(&path).unwrap(); + let mut excel: Ods<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("sheet1").unwrap(); range_eq!( @@ -276,7 +276,7 @@ fn ods_covered() { #[test] fn special_cells() { let path = format!("{}/tests/special_cells.ods", env!("CARGO_MANIFEST_DIR")); - let mut excel: Ods<_> = open_workbook(&path).unwrap(); + let mut excel: Ods<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("sheet1").unwrap(); range_eq!( @@ -298,7 +298,7 @@ fn special_chrs_xlsx() { setup(); let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("spc_chrs").unwrap(); range_eq!( @@ -321,7 +321,7 @@ fn special_chrs_xlsb() { setup(); let path = format!("{}/tests/issues.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsb<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsb<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("spc_chrs").unwrap(); range_eq!( @@ -344,7 +344,7 @@ fn special_chrs_ods() { setup(); let path = format!("{}/tests/issues.ods", env!("CARGO_MANIFEST_DIR")); - let mut excel: Ods<_> = open_workbook(&path).unwrap(); + let mut excel: Ods<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("spc_chrs").unwrap(); range_eq!( @@ -367,7 +367,7 @@ fn partial_richtext_ods() { setup(); let path = format!("{}/tests/richtext_issue.ods", env!("CARGO_MANIFEST_DIR")); - let mut excel: Ods<_> = open_workbook(&path).unwrap(); + let mut excel: Ods<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("datatypes").unwrap(); range_eq!(range, [[String("abc".to_string())]]); @@ -381,7 +381,7 @@ fn xlsx_richtext_namespaced() { "{}/tests/richtext-namespaced.xlsx", env!("CARGO_MANIFEST_DIR") ); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Sheet1").unwrap(); range_eq!( @@ -404,7 +404,7 @@ fn defined_names_xlsx() { setup(); let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let excel: Xlsx<_> = open_workbook(&path).unwrap(); + let excel: Xlsx<_> = open_workbook(path).unwrap(); let mut defined_names = excel.defined_names().to_vec(); defined_names.sort(); @@ -423,7 +423,7 @@ fn defined_names_xlsb() { setup(); let path = format!("{}/tests/issues.xlsb", env!("CARGO_MANIFEST_DIR")); - let excel: Xlsb<_> = open_workbook(&path).unwrap(); + let excel: Xlsb<_> = open_workbook(path).unwrap(); let mut defined_names = excel.defined_names().to_vec(); defined_names.sort(); @@ -442,7 +442,7 @@ fn defined_names_xls() { setup(); let path = format!("{}/tests/issues.xls", env!("CARGO_MANIFEST_DIR")); - let excel: Xls<_> = open_workbook(&path).unwrap(); + let excel: Xls<_> = open_workbook(path).unwrap(); let mut defined_names = excel.defined_names().to_vec(); defined_names.sort(); @@ -461,7 +461,7 @@ fn defined_names_ods() { setup(); let path = format!("{}/tests/issues.ods", env!("CARGO_MANIFEST_DIR")); - let excel: Ods<_> = open_workbook(&path).unwrap(); + let excel: Ods<_> = open_workbook(path).unwrap(); let mut defined_names = excel.defined_names().to_vec(); defined_names.sort(); @@ -489,7 +489,7 @@ fn parse_sheet_names_in_xls() { "{}/tests/sheet_name_parsing.xls", env!("CARGO_MANIFEST_DIR") ); - let excel: Xls<_> = open_workbook(&path).unwrap(); + let excel: Xls<_> = open_workbook(path).unwrap(); assert_eq!(excel.sheet_names(), &["Sheet1"]); } @@ -508,7 +508,7 @@ fn search_references() { setup(); let path = format!("{}/tests/vba.xlsm", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let vba = excel.vba_project().unwrap().unwrap(); let references = vba.get_references(); let names = references.iter().map(|r| &*r.name).collect::>(); @@ -520,7 +520,7 @@ fn formula_xlsx() { setup(); let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let sheets = excel.sheet_names().to_owned(); for s in sheets { @@ -536,7 +536,7 @@ fn formula_xlsb() { setup(); let path = format!("{}/tests/issues.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsb<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsb<_> = open_workbook(path).unwrap(); let sheets = excel.sheet_names().to_owned(); for s in sheets { @@ -552,7 +552,7 @@ fn formula_vals_xlsb() { setup(); let path = format!("{}/tests/issue_182.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsb<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsb<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("formula_vals").unwrap(); range_eq!( @@ -566,7 +566,7 @@ fn float_vals_xlsb() { setup(); let path = format!("{}/tests/issue_186.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsb<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsb<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Sheet1").unwrap(); range_eq!( @@ -586,7 +586,7 @@ fn formula_xls() { setup(); let path = format!("{}/tests/issues.xls", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xls<_> = open_workbook(&path).unwrap(); + let mut excel: Xls<_> = open_workbook(path).unwrap(); let sheets = excel.sheet_names().to_owned(); for s in sheets { @@ -602,9 +602,9 @@ fn formula_ods() { setup(); let path = format!("{}/tests/issues.ods", env!("CARGO_MANIFEST_DIR")); - let mut excel: Ods<_> = open_workbook(&path).unwrap(); + let mut excel: Ods<_> = open_workbook(path).unwrap(); - for s in excel.sheet_names().to_owned() { + for s in excel.sheet_names() { let _ = excel.worksheet_formula(&s).unwrap(); } @@ -617,8 +617,8 @@ fn empty_sheet() { setup(); let path = format!("{}/tests/empty_sheet.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); - for s in excel.sheet_names().to_owned() { + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); + for s in excel.sheet_names() { let range = excel.worksheet_range(&s).unwrap(); assert_eq!(range.start(), None, "wrong start"); assert_eq!(range.end(), None, "wrong end"); @@ -631,7 +631,7 @@ fn issue_120() { setup(); let path = format!("{}/tests/issues.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("issue2").unwrap(); let end = range.end().unwrap(); @@ -648,7 +648,7 @@ fn issue_127() { setup(); let root = env!("CARGO_MANIFEST_DIR"); - let ordered_names: Vec = vec![ + let ordered_names: Vec = [ "Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", ] .iter() @@ -675,7 +675,7 @@ fn mul_rk() { "{}/tests/adhocallbabynames1996to2016.xls", env!("CARGO_MANIFEST_DIR") ); - let mut xls: Xls<_> = open_workbook(&path).unwrap(); + let mut xls: Xls<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range("Boys").unwrap(); assert_eq!(range.get_value((6, 2)), Some(&Float(9.))); } @@ -685,7 +685,7 @@ fn skip_phonetic_text() { setup(); let path = format!("{}/tests/rph.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsx<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsx<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range("Sheet1").unwrap(); assert_eq!( range.get_value((0, 0)), @@ -698,7 +698,7 @@ fn issue_174() { setup(); let path = format!("{}/tests/issue_174.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsx<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsx<_> = open_workbook(path).unwrap(); xls.worksheet_range_at(0).unwrap().unwrap(); } @@ -709,7 +709,7 @@ fn table() { "{}/tests/temperature-table.xlsx", env!("CARGO_MANIFEST_DIR") ); - let mut xls: Xlsx<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsx<_> = open_workbook(path).unwrap(); xls.load_tables().unwrap(); let table_names = xls.table_names(); assert_eq!(table_names[0], "Temperature"); @@ -745,7 +745,7 @@ fn date_xls() { setup(); let path = format!("{}/tests/date.xls", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xls<_> = open_workbook(&path).unwrap(); + let mut xls: Xls<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -783,7 +783,7 @@ fn date_xls_1904() { setup(); let path = format!("{}/tests/date_1904.xls", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xls<_> = open_workbook(&path).unwrap(); + let mut xls: Xls<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -821,7 +821,7 @@ fn date_xlsx() { setup(); let path = format!("{}/tests/date.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsx<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsx<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -859,7 +859,7 @@ fn date_xlsx_1904() { setup(); let path = format!("{}/tests/date_1904.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsx<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsx<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -897,7 +897,7 @@ fn date_xlsx_iso() { setup(); let path = format!("{}/tests/date_iso.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsx<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsx<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -940,7 +940,7 @@ fn date_ods() { setup(); let path = format!("{}/tests/date.ods", env!("CARGO_MANIFEST_DIR")); - let mut ods: Ods<_> = open_workbook(&path).unwrap(); + let mut ods: Ods<_> = open_workbook(path).unwrap(); let range = ods.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -991,7 +991,7 @@ fn date_xlsb() { setup(); let path = format!("{}/tests/date.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsb<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsb<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -1029,7 +1029,7 @@ fn date_xlsb_1904() { setup(); let path = format!("{}/tests/date_1904.xlsb", env!("CARGO_MANIFEST_DIR")); - let mut xls: Xlsb<_> = open_workbook(&path).unwrap(); + let mut xls: Xlsb<_> = open_workbook(path).unwrap(); let range = xls.worksheet_range_at(0).unwrap().unwrap(); assert_eq!( @@ -1069,7 +1069,7 @@ fn issue_219() { let path = format!("{}/tests/issue219.xls", env!("CARGO_MANIFEST_DIR")); // should not panic - let _: Xls<_> = open_workbook(&path).unwrap(); + let _: Xls<_> = open_workbook(path).unwrap(); } #[test] @@ -1077,7 +1077,7 @@ fn issue_221() { setup(); let path = format!("{}/tests/issue221.xlsm", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Sheet1").unwrap(); range_eq!( @@ -1094,13 +1094,13 @@ fn merged_regions_xlsx() { use calamine::Dimensions; use std::string::String; let path = format!("{}/tests/merged_range.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); excel.load_merged_regions().unwrap(); assert_eq!( excel .merged_regions() .iter() - .map(|(o1, o2, o3)| (o1.to_string(), o2.to_string(), o3.clone())) + .map(|(o1, o2, o3)| (o1.to_string(), o2.to_string(), *o3)) .collect::>(), vec![ ( @@ -1186,7 +1186,7 @@ fn merged_regions_xlsx() { excel .merged_regions_by_sheet("Sheet1") .iter() - .map(|&(o1, o2, o3)| (o1.to_string(), o2.to_string(), o3.clone())) + .map(|&(o1, o2, o3)| (o1.to_string(), o2.to_string(), *o3)) .collect::>(), vec![ ( @@ -1242,7 +1242,7 @@ fn merged_regions_xlsx() { excel .merged_regions_by_sheet("Sheet2") .iter() - .map(|&(o1, o2, o3)| (o1.to_string(), o2.to_string(), o3.clone())) + .map(|&(o1, o2, o3)| (o1.to_string(), o2.to_string(), *o3)) .collect::>(), vec![ ( @@ -1365,7 +1365,7 @@ fn test_values_xls() { "{}/tests/xls_wrong_decimals.xls", env!("CARGO_MANIFEST_DIR") ); - let mut excel: Xls<_> = open_workbook(&path).unwrap(); + let mut excel: Xls<_> = open_workbook(path).unwrap(); let range = excel .worksheet_range_at(0) .unwrap() @@ -1405,7 +1405,7 @@ fn issue_271() -> Result<(), calamine::Error> { #[test] fn issue_305_merge_cells() { let path = format!("{}/tests/merge_cells.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let merge_cells = excel.worksheet_merge_cells_at(0).unwrap().unwrap(); assert_eq!( @@ -1421,7 +1421,7 @@ fn issue_305_merge_cells() { #[test] fn issue_305_merge_cells_xls() { let path = format!("{}/tests/merge_cells.xls", env!("CARGO_MANIFEST_DIR")); - let excel: Xls<_> = open_workbook(&path).unwrap(); + let excel: Xls<_> = open_workbook(path).unwrap(); let merge_cells = excel.worksheet_merge_cells_at(0).unwrap(); assert_eq!( @@ -1488,7 +1488,7 @@ fn ods_merged_cells() { setup(); let path = format!("{}/tests/merged_cells.ods", env!("CARGO_MANIFEST_DIR")); - let mut ods: Ods<_> = open_workbook(&path).unwrap(); + let mut ods: Ods<_> = open_workbook(path).unwrap(); let range = ods.worksheet_range_at(0).unwrap().unwrap(); range_eq!( @@ -1517,7 +1517,7 @@ fn ods_number_rows_repeated() { "{}/tests/number_rows_repeated.ods", env!("CARGO_MANIFEST_DIR") ); - let mut ods: Ods<_> = open_workbook(&path).unwrap(); + let mut ods: Ods<_> = open_workbook(path).unwrap(); let test_cropped_range = [ [String("A".to_string()), String("B".to_string())], [String("C".to_string()), String("D".to_string())], @@ -1592,7 +1592,7 @@ fn ods_number_rows_repeated() { fn issue304_xls_formula() { setup(); let path = format!("{}/tests/xls_formula.xls", env!("CARGO_MANIFEST_DIR")); - let mut wb: Xls<_> = open_workbook(&path).unwrap(); + let mut wb: Xls<_> = open_workbook(path).unwrap(); let formula = wb.worksheet_formula("Sheet1").unwrap(); let mut rows = formula.rows(); assert_eq!(rows.next(), Some(&["A1*2".to_owned()][..])); @@ -1605,7 +1605,7 @@ fn issue304_xls_formula() { fn issue304_xls_values() { setup(); let path = format!("{}/tests/xls_formula.xls", env!("CARGO_MANIFEST_DIR")); - let mut wb: Xls<_> = open_workbook(&path).unwrap(); + let mut wb: Xls<_> = open_workbook(path).unwrap(); let rge = wb.worksheet_range("Sheet1").unwrap(); let mut rows = rge.rows(); assert_eq!(rows.next(), Some(&[Data::Float(10.)][..])); @@ -1619,7 +1619,7 @@ fn issue304_xls_values() { fn issue334_xls_values_string() { setup(); let path = format!("{}/tests/xls_ref_String.xls", env!("CARGO_MANIFEST_DIR")); - let mut wb: Xls<_> = open_workbook(&path).unwrap(); + let mut wb: Xls<_> = open_workbook(path).unwrap(); let rge = wb.worksheet_range("Sheet1").unwrap(); let mut rows = rge.rows(); assert_eq!(rows.next(), Some(&[Data::String("aa".into())][..])); @@ -1634,7 +1634,7 @@ fn issue281_vba() { setup(); let path = format!("{}/tests/issue281.xlsm", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let mut vba = excel.vba_project().unwrap().unwrap(); assert_eq!( @@ -1651,7 +1651,7 @@ fn issue343() { let path = format!("{}/tests/issue343.xls", env!("CARGO_MANIFEST_DIR")); // should not panic - let _: Xls<_> = open_workbook(&path).unwrap(); + let _: Xls<_> = open_workbook(path).unwrap(); } #[test] @@ -1905,7 +1905,7 @@ fn issue_401_empty_tables() { setup(); let path = format!("{}/tests/date.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); excel.load_tables().unwrap(); let tables = excel.table_names(); assert!(tables.is_empty()); @@ -1916,9 +1916,9 @@ fn issue_391_shared_formula() { setup(); let path = format!("{}/tests/issue_391.xlsx", env!("CARGO_MANIFEST_DIR")); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let mut expect = Range::::new((1, 0), (6, 0)); - for (i, cell) in vec!["A1+1", "A2+1", "A3+1", "A4+1", "A5+1", "A6+1"] + for (i, cell) in ["A1+1", "A2+1", "A3+1", "A4+1", "A5+1", "A6+1"] .iter() .enumerate() { @@ -1938,7 +1938,7 @@ fn issue_420_empty_s_attribute() { "{}/tests/empty_s_attribute.xlsx", env!("CARGO_MANIFEST_DIR") ); - let mut excel: Xlsx<_> = open_workbook(&path).unwrap(); + let mut excel: Xlsx<_> = open_workbook(path).unwrap(); let range = excel.worksheet_range("Sheet1").unwrap(); range_eq!(