From 4ed90f4214a73bdb620936c19213a2902dfd2bb9 Mon Sep 17 00:00:00 2001 From: Kaede Hoshikawa Date: Sun, 8 Jan 2023 22:41:43 +0900 Subject: [PATCH] Prefer pop_first if it is available. --- packages/yew/src/scheduler.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/yew/src/scheduler.rs b/packages/yew/src/scheduler.rs index c7f37dbca09..6f9113bf346 100644 --- a/packages/yew/src/scheduler.rs +++ b/packages/yew/src/scheduler.rs @@ -46,12 +46,20 @@ impl TopologicalQueue { } /// Take a single entry, preferring parents over children + #[rustversion::before(1.66)] fn pop_topmost(&mut self) -> Option { - // To be replaced with BTreeMap::pop_first once it is stable. + // BTreeMap::pop_first is available after 1.66. let key = *self.inner.keys().next()?; self.inner.remove(&key) } + /// Take a single entry, preferring parents over children + #[rustversion::since(1.66)] + #[inline] + fn pop_topmost(&mut self) -> Option { + self.inner.pop_first().map(|(_, v)| v) + } + /// Drain all entries, such that children are queued before parents fn drain_post_order_into(&mut self, queue: &mut Vec) { if self.inner.is_empty() {