diff --git a/src/runtime/mod.rs b/src/runtime/mod.rs index 8dada839b474f0c9d86b257788eeab8e4f63cd5b..bdf623dd3a781958a81d5b155db871e15205197c 100644 --- a/src/runtime/mod.rs +++ b/src/runtime/mod.rs @@ -1,7 +1,11 @@ +/// cbindgen:ignore mod communication; +/// cbindgen:ignore mod endpoints; pub mod error; +/// cbindgen:ignore mod logging; +/// cbindgen:ignore mod setup; #[cfg(feature = "ffi")] @@ -46,6 +50,7 @@ struct RoundOk { batch_index: usize, gotten: HashMap, } +#[derive(Default)] struct VecSet { // invariant: ordered, deduplicated vec: Vec, @@ -153,7 +158,7 @@ struct EndpointManager { // 2. Events is empty poll: Poll, events: Events, - polled_undrained: IndexSet, + polled_undrained: VecSet, delayed_messages: Vec<(usize, Msg)>, undelayed_messages: Vec<(usize, Msg)>, endpoint_exts: Vec, @@ -209,18 +214,21 @@ impl VecSet { fn contains(&self, element: &T) -> bool { self.vec.binary_search(element).is_ok() } - // fn insert(&mut self, element: T) -> bool { - // match self.vec.binary_search(&element) { - // Ok(_) => false, - // Err(index) => { - // self.vec.insert(index, element); - // true - // } - // } - // } + fn insert(&mut self, element: T) -> bool { + match self.vec.binary_search(&element) { + Ok(_) => false, + Err(index) => { + self.vec.insert(index, element); + true + } + } + } fn iter(&self) -> std::slice::Iter { self.vec.iter() } + fn pop(&mut self) -> Option { + self.vec.pop() + } } impl PortInfo { fn firing_var_for(&self, port: PortId) -> FiringVar {