From a2eb0a235b738864a107eb9d859878c68f7d5bbf Mon Sep 17 00:00:00 2001 From: HampusM Date: Mon, 5 Aug 2024 23:22:49 +0200 Subject: fix(ecs): always sort components & component metadata --- ecs/src/util.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 ecs/src/util.rs (limited to 'ecs/src/util.rs') diff --git a/ecs/src/util.rs b/ecs/src/util.rs new file mode 100644 index 0000000..f4f8632 --- /dev/null +++ b/ecs/src/util.rs @@ -0,0 +1,48 @@ +pub trait Sortable +{ + type Item; + + fn sort_by_key_b(&mut self, func: Func) + where + Func: FnMut(&Self::Item) -> Key, + Key: Ord; +} + +impl Sortable for [Item] +{ + type Item = Item; + + fn sort_by_key_b(&mut self, func: Func) + where + Func: FnMut(&Self::Item) -> Key, + Key: Ord, + { + self.sort_by_key(func) + } +} + +impl Sortable for [Item; LENGTH] +{ + type Item = Item; + + fn sort_by_key_b(&mut self, func: Func) + where + Func: FnMut(&Self::Item) -> Key, + Key: Ord, + { + self.sort_by_key(func) + } +} + +impl Sortable for Vec +{ + type Item = Item; + + fn sort_by_key_b(&mut self, func: Func) + where + Func: FnMut(&Self::Item) -> Key, + Key: Ord, + { + self.sort_by_key(func) + } +} -- cgit v1.2.3-18-g5258