diff --git a/crossbeam-deque/src/deque.rs b/crossbeam-deque/src/deque.rs index a8af6e9e7..8374d6053 100644 --- a/crossbeam-deque/src/deque.rs +++ b/crossbeam-deque/src/deque.rs @@ -284,6 +284,28 @@ impl Worker { } } + /// Returns true if the given stealer was derived from this worker. + /// + /// # Examples + /// + /// ``` + /// use crossbeam_deque::Worker; + /// + /// let w_1 = Worker::::new_lifo(); + /// let w_2 = Worker::::new_fifo(); + /// + /// let s_1 = w_1.stealer(); + /// let s_2 = w_2.stealer(); + /// + /// assert!(w_1.is_same_as(&s_1)); + /// assert!(w_2.is_same_as(&s_2)); + /// assert!(!w_1.is_same_as(&s_2)); + /// assert!(!w_2.is_same_as(&s_1)); + /// ``` + pub fn is_same_as(&self, stealer: &Stealer) -> bool { + Arc::ptr_eq(&self.inner, &stealer.inner) + } + /// Resizes the internal buffer to the new capacity of `new_cap`. #[cold] unsafe fn resize(&self, new_cap: usize) {