luaur_analysis/methods/set_begin.rs
1//! Node: `cxx:Method:Luau.Analysis:Analysis/include/Luau/Set.h:104:set_iteration`
2//! Source: `Analysis/include/Luau/Set.h:104-199` (hand-ported)
3
4use crate::records::set::Set;
5
6impl<T: Clone + core::hash::Hash + PartialEq> Set<T> {
7 /// C++ `begin()/end()` over live entries only. `erase` leaves tombstones in
8 /// the underlying map, so iteration must skip entries whose presence bit is
9 /// false.
10 pub fn iter(&self) -> impl Iterator<Item = &T> {
11 self.mapping
12 .iter()
13 .filter_map(|(element, present)| if *present { Some(element) } else { None })
14 }
15}