Struct stdout_channel::MockStdout [−][src]
pub struct MockStdout<T>(_);Implementations
Methods from Deref<Target = Mutex<Vec<T>>>
Locks this mutex, causing the current task to yield until the lock has
been acquired. When the lock has been acquired, function returns a
MutexGuard.
Cancel safety
This method uses a queue to fairly distribute locks in the order they
were requested. Cancelling a call to lock makes you lose your place in
the queue.
Examples
use tokio::sync::Mutex;
#[tokio::main]
async fn main() {
let mutex = Mutex::new(1);
let mut n = mutex.lock().await;
*n = 2;
}Blocking lock this mutex. When the lock has been acquired, function returns a
MutexGuard.
This method is intended for use cases where you need to use this mutex in asynchronous code as well as in synchronous code.
Examples
use std::sync::Arc;
use tokio::sync::Mutex;
#[tokio::main]
async fn main() {
let mutex = Arc::new(Mutex::new(1));
let mutex1 = Arc::clone(&mutex);
let sync_code = tokio::task::spawn_blocking(move || {
let mut n = mutex1.blocking_lock();
*n = 2;
});
sync_code.await.unwrap();
let n = mutex.lock().await;
assert_eq!(*n, 2);
}
Locks this mutex, causing the current task to yield until the lock has
been acquired. When the lock has been acquired, this returns an
OwnedMutexGuard.
This method is identical to Mutex::lock, except that the returned
guard references the Mutex with an Arc rather than by borrowing
it. Therefore, the Mutex must be wrapped in an Arc to call this
method, and the guard will live for the 'static lifetime, as it keeps
the Mutex alive by holding an Arc.
Cancel safety
This method uses a queue to fairly distribute locks in the order they
were requested. Cancelling a call to lock_owned makes you lose your
place in the queue.
Examples
use tokio::sync::Mutex;
use std::sync::Arc;
#[tokio::main]
async fn main() {
let mutex = Arc::new(Mutex::new(1));
let mut n = mutex.clone().lock_owned().await;
*n = 2;
}Attempts to acquire the lock, and returns TryLockError if the
lock is currently held somewhere else.
Examples
use tokio::sync::Mutex;
let mutex = Mutex::new(1);
let n = mutex.try_lock()?;
assert_eq!(*n, 1);Attempts to acquire the lock, and returns TryLockError if the lock
is currently held somewhere else.
This method is identical to Mutex::try_lock, except that the
returned guard references the Mutex with an Arc rather than by
borrowing it. Therefore, the Mutex must be wrapped in an Arc to call
this method, and the guard will live for the 'static lifetime, as it
keeps the Mutex alive by holding an Arc.
Examples
use tokio::sync::Mutex;
use std::sync::Arc;
let mutex = Arc::new(Mutex::new(1));
let n = mutex.clone().try_lock_owned()?;
assert_eq!(*n, 1);Trait Implementations
Auto Trait Implementations
impl<T> !RefUnwindSafe for MockStdout<T>
impl<T> Send for MockStdout<T> where
T: Send,
impl<T> Sync for MockStdout<T> where
T: Send,
impl<T> Unpin for MockStdout<T>
impl<T> !UnwindSafe for MockStdout<T>
Blanket Implementations
Mutably borrows from an owned value. Read more
