Skip to content

Commit 1ee91aa

Browse files
committed
Eliminate HashSet runtime dependencies to isolate WASM build failures
1 parent 0e2e7f8 commit 1ee91aa

1 file changed

Lines changed: 13 additions & 11 deletions

File tree

node-graph/nodes/vector/src/vector_nodes.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2180,31 +2180,33 @@ fn bevel_algorithm(mut vector: Vector, transform: DAffine2, distance: f64) -> Ve
21802180
let end_points = segment_domain.end_point();
21812181

21822182
let mut paths = Vec::new();
2183-
let mut unvisited_segments: std::collections::HashSet<usize> = (0..segment_domain.ids().len()).collect();
2183+
let mut unvisited_segments: Vec<usize> = (0..segment_domain.ids().len()).collect();
21842184

21852185
while !unvisited_segments.is_empty() {
2186-
let first = *unvisited_segments.iter().next().unwrap();
2187-
unvisited_segments.remove(&first);
2188-
2186+
let first = unvisited_segments[0];
2187+
unvisited_segments.retain(|&x| x != first);
2188+
21892189
let mut path = vec![first];
2190-
2190+
21912191
loop {
21922192
let last = *path.last().unwrap();
21932193
// Find next segment
2194-
if let Some(&next) = unvisited_segments.iter().find(|&&p| start_points[p] == end_points[last]) {
2194+
if let Some(next_idx) = unvisited_segments.iter().position(|&p| start_points[p] == end_points[last]) {
2195+
let next = unvisited_segments[next_idx];
21952196
path.push(next);
2196-
unvisited_segments.remove(&next);
2197+
unvisited_segments.retain(|&x| x != next);
21972198
} else {
21982199
break;
21992200
}
22002201
}
2201-
2202+
22022203
// Try to extend backwards
22032204
loop {
22042205
let first = *path.first().unwrap();
2205-
if let Some(&prev) = unvisited_segments.iter().find(|&&p| end_points[p] == start_points[first]) {
2206+
if let Some(prev_idx) = unvisited_segments.iter().position(|&p| end_points[p] == start_points[first]) {
2207+
let prev = unvisited_segments[prev_idx];
22062208
path.insert(0, prev);
2207-
unvisited_segments.remove(&prev);
2209+
unvisited_segments.retain(|&x| x != prev);
22082210
} else {
22092211
break;
22102212
}
@@ -2348,7 +2350,7 @@ fn bevel_algorithm(mut vector: Vector, transform: DAffine2, distance: f64) -> Ve
23482350
// Clean up colinear_manipulators: remove entries that reference
23492351
// segments which no longer exist or have become linear after beveling.
23502352
// Collect valid non-linear segment IDs first to avoid borrow conflicts.
2351-
let valid_nonlinear_segments: std::collections::HashSet<SegmentId> = vector
2353+
let valid_nonlinear_segments: Vec<SegmentId> = vector
23522354
.segment_domain
23532355
.ids()
23542356
.iter()

0 commit comments

Comments
 (0)