/// # Examples
///
/// ```
- /// #![feature(wait_until)]
- ///
/// use std::sync::{Arc, Mutex, Condvar};
/// use std::thread;
///
/// // As long as the value inside the `Mutex<bool>` is `false`, we wait.
/// let _guard = cvar.wait_until(lock.lock().unwrap(), |started| { *started }).unwrap();
/// ```
- #[unstable(feature = "wait_until", issue = "47960")]
+ #[stable(feature = "wait_until", since = "1.42.0")]
pub fn wait_until<'a, T, F>(
&self,
mut guard: MutexGuard<'a, T>,
/// # Examples
///
/// ```
- /// #![feature(wait_timeout_until)]
- ///
/// use std::sync::{Arc, Mutex, Condvar};
/// use std::thread;
/// use std::time::Duration;
/// }
/// // access the locked mutex via result.0
/// ```
- #[unstable(feature = "wait_timeout_until", issue = "47960")]
+ #[stable(feature = "wait_timeout_until", since = "1.42.0")]
pub fn wait_timeout_until<'a, T, F>(
&self,
mut guard: MutexGuard<'a, T>,
#[cfg(test)]
mod tests {
use crate::sync::atomic::{AtomicBool, Ordering};
- /// #![feature(wait_until)]
use crate::sync::mpsc::channel;
use crate::sync::{Arc, Condvar, Mutex};
use crate::thread;