fix clippy lints

This commit is contained in:
Jan Christian Grünhage 2021-12-05 11:10:03 +01:00
parent c57507f579
commit ef64f62b28
4 changed files with 17 additions and 14 deletions

View file

@ -32,7 +32,7 @@ pub trait State {
}
fn movements(&mut self, moves: &[Movement]) -> isize {
for movement in moves {
self.movement(&movement);
self.movement(movement);
}
self.result()
}
@ -96,15 +96,17 @@ pub enum Movement {
Up(isize),
}
#[allow(clippy::unnecessary_mut_passed)]
impl FromStr for Movement {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
let mut tokens = s.into_tokens();
yap::one_of!(ts from &mut tokens;
ts.tokens("forward ".chars()).then(|| parse_number(ts).map(|num| Movement::Forward(num))).flatten(),
ts.tokens("down ".chars()).then(|| parse_number(ts).map(|num| Movement::Down(num))).flatten(),
ts.tokens("up ".chars()).then(|| parse_number(ts).map(|num| Movement::Up(num))).flatten(),
).ok_or(())
ts.tokens("forward ".chars()).then(|| parse_number(ts).map(Movement::Forward)).flatten(),
ts.tokens("down ".chars()).then(|| parse_number(ts).map(Movement::Down)).flatten(),
ts.tokens("up ".chars()).then(|| parse_number(ts).map(Movement::Up)).flatten(),
)
.ok_or(())
}
}

View file

@ -18,7 +18,7 @@ pub struct Game {
impl Board {
pub fn mark(&mut self, num: usize) -> Option<usize> {
if self.finished == true {
if self.finished {
return None;
}
for lines in self.fields.iter_mut() {

View file

@ -19,15 +19,13 @@ pub fn part1(input: &[Line]) -> usize {
#[aoc(day5, part2)]
pub fn part2(input: &[Line]) -> usize {
solve(input, &|line| line.is_horizontal() || line.is_vertical() || line.is_diagonal())
solve(input, &|line| {
line.is_horizontal() || line.is_vertical() || line.is_diagonal()
})
}
pub fn solve(input: &[Line], filter: &impl Fn(&&Line) -> bool) -> usize {
let lines: Vec<Line> = input
.iter()
.filter(filter)
.copied()
.collect();
let lines: Vec<Line> = input.iter().filter(filter).copied().collect();
let grid = Grid::from(&lines[..]);
grid.count()
}

View file

@ -12,10 +12,13 @@ pub fn parse_number<T: Num>(tokens: &mut impl Tokens<Item = char>) -> Option<T>
parse_number_with_radix(tokens, 10)
}
pub fn parse_number_with_radix<T: Num>(tokens: &mut impl Tokens<Item = char>, base: u32) -> Option<T> {
pub fn parse_number_with_radix<T: Num>(
tokens: &mut impl Tokens<Item = char>,
base: u32,
) -> Option<T> {
tokens.skip_tokens_while(|t| *t == ' ');
let digits: String = tokens.tokens_while(|c| c.is_digit(base)).collect();
if digits.len() > 0 {
if !digits.is_empty() {
T::from_str_radix(&digits, base).ok()
} else {
None