From c84c38544bc6e81f0b0482e4e82b6c95848c1a0c Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 6 Apr 2021 14:54:54 +0530 Subject: apply clippy lints --- src/lisp/expr.rs | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'src/lisp/expr.rs') diff --git a/src/lisp/expr.rs b/src/lisp/expr.rs index d2066e7..692f951 100644 --- a/src/lisp/expr.rs +++ b/src/lisp/expr.rs @@ -1,12 +1,18 @@ -use std::{cmp::PartialEq, convert::TryFrom, fmt}; +use std::{ + cmp::PartialEq, + convert::{From, TryFrom}, + fmt, +}; use crate::{ app::AppState, + bitmap::Axis, + guide::Guide, lisp::{ error::{EvalError, LispError}, eval::lookup, number::LispNumber, - EnvList, + Environment, }, }; @@ -113,7 +119,7 @@ impl LispExpr { } } - pub fn compare(&self, other: &Self, envs: &EnvList) -> Result { + pub fn compare(&self, other: &Self, envs: &[Environment]) -> Result { match (self, other) { (LispExpr::Unit, LispExpr::Unit) => Ok(true), (LispExpr::Number(s), LispExpr::Number(o)) => Ok(s == o), @@ -121,8 +127,8 @@ impl LispExpr { .iter() .zip(o) .all(|(a, b)| matches!(a.compare(b, envs), Ok(true)))), - (LispExpr::List(s), LispExpr::Unit) => Ok(s.len() == 0), - (LispExpr::Unit, LispExpr::List(s)) => Ok(s.len() == 0), + (LispExpr::List(s), LispExpr::Unit) => Ok(s.is_empty()), + (LispExpr::Unit, LispExpr::List(s)) => Ok(s.is_empty()), (LispExpr::StringLit(s), LispExpr::StringLit(o)) => Ok(s == o), (LispExpr::Char(s), LispExpr::Char(o)) => Ok(s == o), (LispExpr::BoolLit(s), LispExpr::BoolLit(o)) => Ok(s == o), @@ -152,7 +158,7 @@ impl LispExpr { // have these be code gen'd somehow pub fn unwrap_number(&self) -> LispNumber { match &self { - LispExpr::Number(p) => p.clone(), + LispExpr::Number(p) => *p, _ => panic!("attempt to call `unwrap_number` on invalid type"), } } @@ -200,10 +206,7 @@ impl LispExpr { } pub fn cast_bool(&self) -> bool { - match &self { - LispExpr::BoolLit(false) => false, - _ => true, - } + !matches!(self, LispExpr::BoolLit(false)) } } @@ -347,3 +350,26 @@ impl TryFrom for BoolLit { } } } + +// conversion implementations + +impl From for LispExpr { + fn from(axis: Axis) -> LispExpr { + LispExpr::Quote( + Box::new(LispExpr::Ident(match axis { + Axis::X => "X".into(), + Axis::Y => "Y".into(), + })), + 1, + ) + } +} + +impl From for LispExpr { + fn from(guide: Guide) -> LispExpr { + LispExpr::List(vec![ + guide.axis.into(), + LispExpr::Number(LispNumber::Integer(guide.offset as i64)), + ]) + } +} -- cgit v1.2.3