From bbeb30c9817327f8c6fc7e50580f3e5f567dfafe Mon Sep 17 00:00:00 2001 From: LawnCable Date: Fri, 15 Apr 2022 08:37:06 +0200 Subject: do cargo clippy fixes --- src/lib.rs | 4 ++ src/lowlevel/data.rs | 4 +- src/lowlevel/image.rs | 2 +- src/lowlevel/layer_tile.rs | 2 +- src/lowlevel/macros.rs | 2 - src/lowlevel/map.rs | 91 ++++++++++++++++++++++++++++------------------ src/lowlevel/property.rs | 5 +-- src/lowlevel/wangset.rs | 4 +- src/main.rs | 7 ++-- 9 files changed, 70 insertions(+), 51 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index df5e266..f8555a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1 +1,5 @@ +#![allow(dead_code)] +#![deny(unsafe_code)] +#![deny(clippy::panic)] +#![deny(clippy::panicking_unwrap)] pub mod lowlevel; diff --git a/src/lowlevel/data.rs b/src/lowlevel/data.rs index 59a0b3e..40afa74 100644 --- a/src/lowlevel/data.rs +++ b/src/lowlevel/data.rs @@ -2,9 +2,9 @@ /// The encoding used to encode the tile layer data. When used, it can be “base64” and “csv” at the moment. pub enum Encoding { /// Plain XML based, in tags - XML, + Xml, Base64, - CSV, + Csv, } #[derive(Debug, PartialEq)] /// The compression used to compress the tile layer data. diff --git a/src/lowlevel/image.rs b/src/lowlevel/image.rs index 6747e69..7b08bcc 100644 --- a/src/lowlevel/image.rs +++ b/src/lowlevel/image.rs @@ -48,7 +48,7 @@ impl Image { let transparent_color: Option = if let Some(s) = node.attribute("trans") { { - let mut c = s.trim_start_matches("#").chars(); + let mut c = s.trim_start_matches('#').chars(); if let Some(color) = read_color::rgb(&mut c) { Ok(Some(RGB8 { r: color[0], diff --git a/src/lowlevel/layer_tile.rs b/src/lowlevel/layer_tile.rs index bca5daf..caade1a 100644 --- a/src/lowlevel/layer_tile.rs +++ b/src/lowlevel/layer_tile.rs @@ -45,7 +45,7 @@ impl LayerTile { #[cfg(test)] mod test_layer_tile { - use crate::lowlevel::{layer_tile::*}; + use crate::lowlevel::layer_tile::*; #[test] fn test_get_flip() { diff --git a/src/lowlevel/macros.rs b/src/lowlevel/macros.rs index 7568161..29c4511 100644 --- a/src/lowlevel/macros.rs +++ b/src/lowlevel/macros.rs @@ -1,5 +1,3 @@ -use anyhow::anyhow; - #[macro_export] macro_rules! parse_property_test { ($type:ident, $input:expr, $expected_output:expr) => {{ diff --git a/src/lowlevel/map.rs b/src/lowlevel/map.rs index 9d0b715..e3e2bfa 100644 --- a/src/lowlevel/map.rs +++ b/src/lowlevel/map.rs @@ -1,3 +1,5 @@ +use std::fmt; + use crate::{ensure_element, ensure_tag_name, get_attribute}; use anyhow::anyhow; use rgb::RGBA; @@ -34,19 +36,23 @@ impl MapOrientation { pub fn from_xml_map_node(node: &roxmltree::Node) -> anyhow::Result { let orientation = node .attribute("orientation") - .ok_or(anyhow!("map orientation missing"))?; + .ok_or_else(|| anyhow!("map orientation missing"))?; match orientation { "orthogonal" => Ok(MapOrientation::Orthogonal), "isometric" => Ok(MapOrientation::Isometric), "staggered" => { - let stagger_axis = StaggerAxis::from_string(node.attribute("staggeraxis").ok_or( - anyhow!("map.staggeraxis missing, it is required for orientation=staggered"), - )?)?; - let stagger_index = - StaggerIndex::from_string(node.attribute("staggerindex").ok_or(anyhow!( - "map.staggerindex missing, it is required for orientation=staggered" - ))?)?; + let stagger_axis = + StaggerAxis::from_string(node.attribute("staggeraxis").ok_or_else(|| { + anyhow!("map.staggeraxis missing, it is required for orientation=staggered") + })?)?; + let stagger_index = StaggerIndex::from_string( + node.attribute("staggerindex").ok_or_else(|| { + anyhow!( + "map.staggerindex missing, it is required for orientation=staggered" + ) + })?, + )?; Ok(MapOrientation::Staggered { stagger_axis, @@ -54,18 +60,24 @@ impl MapOrientation { }) } "hexagonal" => { - let stagger_axis = StaggerAxis::from_string(node.attribute("staggeraxis").ok_or( - anyhow!("map.staggeraxis missing, it is required for orientation=hexagonal"), - )?)?; - let stagger_index = - StaggerIndex::from_string(node.attribute("staggerindex").ok_or(anyhow!( - "map.staggerindex missing, it is required for orientation=hexagonal" - ))?)?; + let stagger_axis = + StaggerAxis::from_string(node.attribute("staggeraxis").ok_or_else(|| { + anyhow!("map.staggeraxis missing, it is required for orientation=hexagonal") + })?)?; + let stagger_index = StaggerIndex::from_string( + node.attribute("staggerindex").ok_or_else(|| { + anyhow!( + "map.staggerindex missing, it is required for orientation=hexagonal" + ) + })?, + )?; let hexside_length: i32 = node .attribute("hexsidelength") - .ok_or(anyhow!( - "map.hexsidelength missing, it is required for orientation=hexagonal" - ))? + .ok_or_else(|| { + anyhow!( + "map.hexsidelength missing, it is required for orientation=hexagonal" + ) + })? .parse()?; Ok(MapOrientation::Hexagonal { @@ -77,13 +89,15 @@ impl MapOrientation { _ => Err(anyhow!("Unknown MapOrientation: {}", orientation)), } } +} - pub fn to_string(self) -> String { +impl fmt::Display for MapOrientation { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - MapOrientation::Orthogonal => "orthogonal".to_owned(), - MapOrientation::Isometric => "isometric".to_owned(), - MapOrientation::Staggered { .. } => "staggered".to_owned(), - MapOrientation::Hexagonal { .. } => "hexagonal".to_owned(), + MapOrientation::Orthogonal => write!(f, "orthogonal"), + MapOrientation::Isometric => write!(f, "isometric"), + MapOrientation::Staggered { .. } => write!(f, "staggered"), + MapOrientation::Hexagonal { .. } => write!(f, "hexagonal"), } } } @@ -115,13 +129,15 @@ impl MapRenderOrder { _ => Err(anyhow!("Unknown MapRenderOrder: {}", string)), } } +} - pub fn to_string(self) -> String { +impl fmt::Display for MapRenderOrder { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - MapRenderOrder::RightDown => "right-down".to_owned(), - MapRenderOrder::RightUp => "right-up".to_owned(), - MapRenderOrder::LeftDown => "left-down".to_owned(), - MapRenderOrder::LeftUp => "left-up".to_owned(), + MapRenderOrder::RightDown => write!(f, "right-down"), + MapRenderOrder::RightUp => write!(f, "right-up"), + MapRenderOrder::LeftDown => write!(f, "left-down"), + MapRenderOrder::LeftUp => write!(f, "left-up"), } } } @@ -141,11 +157,13 @@ impl StaggerAxis { _ => Err(anyhow!("invalid StaggerAxis: {}", string)), } } +} - pub fn to_string(self) -> String { +impl fmt::Display for StaggerAxis { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - StaggerAxis::X => "x".to_owned(), - StaggerAxis::Y => "y".to_owned(), + StaggerAxis::X => write!(f, "x"), + StaggerAxis::Y => write!(f, "y"), } } } @@ -165,11 +183,13 @@ impl StaggerIndex { _ => Err(anyhow!("invalid StaggerIndex: {}", string)), } } +} - pub fn to_string(self) -> String { +impl fmt::Display for StaggerIndex { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { - StaggerIndex::Even => "even".to_owned(), - StaggerIndex::Odd => "odd".to_owned(), + StaggerIndex::Even => write!(f, "even"), + StaggerIndex::Odd => write!(f, "odd"), } } } @@ -240,7 +260,8 @@ impl Map { let infinite = if let Ok(inf) = get_attribute!(node, "infinite") { match inf { "1" => true, - "0" | _ => false, + "0" => false, + _ => false, } } else { false diff --git a/src/lowlevel/property.rs b/src/lowlevel/property.rs index def204d..bf6d0c8 100644 --- a/src/lowlevel/property.rs +++ b/src/lowlevel/property.rs @@ -26,10 +26,7 @@ impl Property { ensure_tag_name!(node, "property"); let name = get_attribute!(node, "name")?.to_owned(); - let property_type = match node.attribute("type") { - Some(ty) => ty, - None => "string", - }; + let property_type = node.attribute("type").unwrap_or("string"); // handle the case that 'string' value is stored in element content instead of value atribute if property_type == "string" { diff --git a/src/lowlevel/wangset.rs b/src/lowlevel/wangset.rs index 421ccd0..b774093 100644 --- a/src/lowlevel/wangset.rs +++ b/src/lowlevel/wangset.rs @@ -28,7 +28,7 @@ impl WangColor { let color = { let mut c = get_attribute!(node, "color")? - .trim_start_matches("#") + .trim_start_matches('#') .chars(); if let Some(color) = read_color::rgb(&mut c) { Ok(RGB8 { @@ -145,7 +145,7 @@ pub struct WangId { impl WangId { pub fn from_string(wang_id_string: &str) -> anyhow::Result { - let ids: Vec<&str> = wang_id_string.split(",").collect(); + let ids: Vec<&str> = wang_id_string.split(',').collect(); if ids.len() != 8 { return Err(anyhow!("wrong number of elements in wang id")); } diff --git a/src/main.rs b/src/main.rs index 1fab2ec..5a130ad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,8 @@ -use anyhow::anyhow; -use rgb::RGBA; - +#![allow(dead_code)] +#![deny(unsafe_code)] +use std::fs::File; use std::io::prelude::*; use std::io::BufReader; -use std::{fs::File, usize}; mod lowlevel; -- cgit v1.2.3-60-g2f50