diff --git a/src/praetor/mod.rs b/src/praetor/mod.rs index 2871990..32fdf8d 100644 --- a/src/praetor/mod.rs +++ b/src/praetor/mod.rs @@ -504,13 +504,15 @@ mod job { /// assumes job is in joblist pub unsafe fn unlink(&self) { unsafe { - let link = *self.link_mut(); - if let Some(prev) = link.prev { - prev.as_ref().link_mut().next = link.next; - } - if let Some(next) = link.next { - next.as_ref().link_mut().prev = link.prev; - } + let mut dummy = None; + let Link { prev, next } = *self.link_mut(); + + *prev + .map(|ptr| &mut ptr.as_ref().link_mut().next) + .unwrap_or(&mut dummy) = next; + *next + .map(|ptr| &mut ptr.as_ref().link_mut().prev) + .unwrap_or(&mut dummy) = prev; } }