From 818248457210f5101459ea7d7066d12c456c8a97 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 18 Jan 2025 17:42:11 +0300 Subject: Remove Vec from Shadow::render() --- src/layout/shadow.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) (limited to 'src/layout/shadow.rs') diff --git a/src/layout/shadow.rs b/src/layout/shadow.rs index 1600e333..3e0605c4 100644 --- a/src/layout/shadow.rs +++ b/src/layout/shadow.rs @@ -157,26 +157,19 @@ impl Shadow { &self, renderer: &mut impl NiriRenderer, location: Point, - ) -> impl Iterator { - let mut rv = Vec::new(); - + ) -> impl Iterator + '_ { if !self.config.on { - return rv.into_iter(); + return None.into_iter().flatten(); } let has_shadow_shader = ShadowRenderElement::has_shader(renderer); if !has_shadow_shader { - return rv.into_iter(); + return None.into_iter().flatten(); } - let mut push = |shader: &ShadowRenderElement, location: Point| { - rv.push(shader.clone().with_location(location)); - }; - - for (shader, rect) in zip(&self.shaders, &self.shader_rects) { - push(shader, location + rect.loc); - } + let rv = zip(&self.shaders, &self.shader_rects) + .map(move |(shader, rect)| shader.clone().with_location(location + rect.loc)); - rv.into_iter() + Some(rv).into_iter().flatten() } } -- cgit