diff --git a/src/runtime/mod.rs b/src/runtime/mod.rs index ce5ce2d23cf3751c60cc0772c8d0251c6fc324b9..77868fab50213f7e4d0a8a045b5154c4cb1c63c2 100644 --- a/src/runtime/mod.rs +++ b/src/runtime/mod.rs @@ -217,15 +217,15 @@ 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() } @@ -265,9 +265,13 @@ impl Drop for Connector { impl Connector { fn random_id() -> ConnectorId { type Bytes8 = [u8; std::mem::size_of::()]; - let mut bytes = Bytes8::default(); - getrandom::getrandom(&mut bytes).unwrap(); - unsafe { std::mem::transmute::(bytes) } + unsafe { + let mut bytes = std::mem::MaybeUninit::::uninit(); + // getrandom is the canonical crate for a small, secure rng + getrandom::getrandom(&mut *bytes.as_mut_ptr()).unwrap(); + // safe! representations of all valid Byte8 values are valid ConnectorId values + std::mem::transmute::<_, _>(bytes.assume_init()) + } } pub fn swap_logger(&mut self, mut new_logger: Box) -> Box { std::mem::swap(&mut self.unphased.logger, &mut new_logger);