From f9727d3117a6b76c76641dc17fc1171699108c9c Mon Sep 17 00:00:00 2001 From: timofey Date: Tue, 1 Aug 2023 21:05:53 +0000 Subject: [PATCH] simplify `rectangles` --- clippy.toml | 1 + src/lib.rs | 2 ++ src/rstd/tracing/rendered.rs | 45 +++++++++++++++++++++++++----------- 3 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 clippy.toml diff --git a/clippy.toml b/clippy.toml new file mode 100644 index 0000000..ecea793 --- /dev/null +++ b/clippy.toml @@ -0,0 +1 @@ +cognitive-complexity-threshold = 3 diff --git a/src/lib.rs b/src/lib.rs index a26d75c..8038bdc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,8 @@ //! # RADN //! Rainbow something something Network. +#![warn(clippy::cognitive_complexity)] + pub mod atomic; pub mod flow; pub mod func; diff --git a/src/rstd/tracing/rendered.rs b/src/rstd/tracing/rendered.rs index e19e659..8715eae 100644 --- a/src/rstd/tracing/rendered.rs +++ b/src/rstd/tracing/rendered.rs @@ -207,25 +207,44 @@ impl WithLengthAndWidth { match self.value { RenderedAny::Common(common) => common.rectangles(vec, t, c), RenderedAny::Wide(rendereds) => { - let mut c = c; - for rendered in rendereds.into_iter().map(|x| x.map(RenderedLong::any)) { - let rw = rendered.width; - rendered.rectangles(vec, t, c); - c += 2 * rw; - } + Self::wide_rectangles(c, rendereds, vec, t); } RenderedAny::Long(rendereds) => { - let mut t = t; - for rendered in rendereds.into_iter().map(|x| x.map(RenderedWide::any)) { - let rl = rendered.length; - let rw = rendered.width; - rendered.rectangles(vec, t, c + (self.width - rw) / 2); - t += rl; - } + Self::long_rectangles(t, rendereds, vec, c, self.width); } } } + fn wide_rectangles( + c: usize, + rendereds: Vec>, + vec: &mut Vec<(usize, usize)>, + t: usize, + ) { + let mut c = c; + for rendered in rendereds.into_iter().map(|x| x.map(RenderedLong::any)) { + let rw = rendered.width; + rendered.rectangles(vec, t, c); + c += 2 * rw; + } + } + + fn long_rectangles( + t: usize, + rendereds: Vec>, + vec: &mut Vec<(usize, usize)>, + c: usize, + width: usize, + ) { + let mut t = t; + for rendered in rendereds.into_iter().map(|x| x.map(RenderedWide::any)) { + let rl = rendered.length; + let rw = rendered.width; + rendered.rectangles(vec, t, c + (width - rw) / 2); + t += rl; + } + } + pub fn to_vec(self) -> Vec<(usize, usize)> { let mut vec = Vec::new(); self.rectangles(&mut vec, 0, 0);