mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-09 00:00:08 +02:00
docs: add returning on the first error example for try_join! (#4133)
This commit is contained in:
@@ -59,6 +59,45 @@
|
|||||||
/// }
|
/// }
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// Using `try_join!` with spawned tasks.
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use tokio::task::JoinHandle;
|
||||||
|
///
|
||||||
|
/// async fn do_stuff_async() -> Result<(), &'static str> {
|
||||||
|
/// // async work
|
||||||
|
/// # Err("failed")
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// async fn more_async_work() -> Result<(), &'static str> {
|
||||||
|
/// // more here
|
||||||
|
/// # Ok(())
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// async fn flatten<T>(handle: JoinHandle<Result<T, &'static str>>) -> Result<T, &'static str> {
|
||||||
|
/// match handle.await {
|
||||||
|
/// Ok(Ok(result)) => Ok(result),
|
||||||
|
/// Ok(Err(err)) => Err(err),
|
||||||
|
/// Err(err) => Err("handling failed"),
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// #[tokio::main]
|
||||||
|
/// async fn main() {
|
||||||
|
/// let handle1 = tokio::spawn(do_stuff_async());
|
||||||
|
/// let handle2 = tokio::spawn(more_async_work());
|
||||||
|
/// match tokio::try_join!(flatten(handle1), flatten(handle2)) {
|
||||||
|
/// Ok(val) => {
|
||||||
|
/// // do something with the values
|
||||||
|
/// }
|
||||||
|
/// Err(err) => {
|
||||||
|
/// println!("Failed with {}.", err);
|
||||||
|
/// # assert_eq!(err, "failed");
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
|
||||||
macro_rules! try_join {
|
macro_rules! try_join {
|
||||||
|
|||||||
Reference in New Issue
Block a user