diff --git a/src/lib.rs b/src/lib.rs index e31c10c..a721e53 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,12 +29,12 @@ /// In order to use this attribute, you must turn on all of these features: /// - `generators` /// - `generator_trait` -/// - `try_trait` +/// - `try_trait_v2` /// /// ## Example /// /// ```rust -/// #![feature(generators, generator_trait, try_trait)] +/// #![feature(generators, generator_trait, try_trait_v2)] /// /// #[propane::generator] /// fn fizz_buzz() -> String { @@ -123,11 +123,11 @@ pub mod __internal { #[macro_export] macro_rules! gen_try { ($e:expr) => {{ - use core::ops::Try; - match Try::into_result($e) { - Ok(ok) => ok, - Err(err) => { - yield <_ as Try>::from_error(err); + use core::ops::{Try, ControlFlow, FromResidual}; + match Try::branch($e) { + ControlFlow::Continue(value) => value, + ControlFlow::Break(residual) => { + yield <_ as FromResidual>::from_residual(residual); return; } } @@ -138,11 +138,11 @@ pub mod __internal { #[macro_export] macro_rules! async_gen_try { ($e:expr) => {{ - use core::ops::Try; - match Try::into_result($e) { - Ok(ok) => ok, - Err(err) => { - yield core::task::Poll::Ready(<_ as Try>::from_error(err)); + use core::ops::{Try, ControlFlow, FromResidual}; + match Try::branch($e) { + ControlFlow::Continue(value) => value, + ControlFlow::Break(residual) => { + yield core::task::Poll::Ready(<_ as FromResidual>::from_residual(residual)); return; } } diff --git a/tests/generators.rs b/tests/generators.rs index 6509787..a2a73c0 100644 --- a/tests/generators.rs +++ b/tests/generators.rs @@ -1,4 +1,4 @@ -#![feature(generators, generator_trait, try_trait)] +#![feature(generators, generator_trait, try_trait_v2)] #![no_std] #[propane::generator] diff --git a/tests/stream.rs b/tests/stream.rs index f77160d..2ca0288 100644 --- a/tests/stream.rs +++ b/tests/stream.rs @@ -1,4 +1,4 @@ -#![feature(generators, generator_trait, try_trait)] +#![feature(generators, generator_trait, try_trait_v2)] use std::future::Future;