From 933153f9bbce959cdc626fab32a9ac25c76bf739 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Thu, 24 Nov 2022 11:43:48 -0500 Subject: [PATCH] fix: sort closest match size by distance --- src/theme/mod.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/theme/mod.rs b/src/theme/mod.rs index 7d1ca6b..cd0a940 100644 --- a/src/theme/mod.rs +++ b/src/theme/mod.rs @@ -68,7 +68,21 @@ impl Theme { fn closest_match_size(&self, size: u16, scale: u16) -> Vec { let dirs = self.get_all_directories(); - dirs.filter(|directory| directory.directory_size_distance(size, scale) < i16::MAX) + let mut dirs: Vec<_> = dirs + .filter_map(|directory| { + let distance = directory.directory_size_distance(size, scale); + if distance < i16::MAX { + Some((directory, distance)) + } else { + None + } + }) + .collect(); + + dirs.sort_by(|(_, a), (_, b)| a.cmp(b)); + + dirs.iter() + .map(|(dir, _)| dir) .map(|dir| dir.name) .map(|dir| self.path().join(dir)) .collect()