Skip to content

Commit cd64bb9

Browse files
authored
fix: return empty set of keys instead of panicking when the KeyedSubfield is disposed (#3550)
1 parent f881c18 commit cd64bb9

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

reactive_stores/src/keyed.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,8 @@ where
148148
{
149149
fn latest_keys(&self) -> Vec<K> {
150150
self.reader()
151-
.expect("trying to update keys")
152-
.deref()
153-
.into_iter()
154-
.map(|n| (self.key_fn)(n))
155-
.collect()
151+
.map(|r| r.deref().into_iter().map(|n| (self.key_fn)(n)).collect())
152+
.unwrap_or_default()
156153
}
157154
}
158155

@@ -654,13 +651,15 @@ where
654651
self.track_field();
655652

656653
// get the current length of the field by accessing slice
657-
let reader = self
658-
.reader()
659-
.expect("creating iterator from unavailable store field");
654+
let reader = self.reader();
655+
660656
let keys = reader
661-
.into_iter()
662-
.map(|item| (self.key_fn)(item))
663-
.collect::<VecDeque<_>>();
657+
.map(|r| {
658+
r.into_iter()
659+
.map(|item| (self.key_fn)(item))
660+
.collect::<VecDeque<_>>()
661+
})
662+
.unwrap_or_default();
664663

665664
// return the iterator
666665
StoreFieldKeyedIter { inner: self, keys }

0 commit comments

Comments
 (0)