From 0c203965e2a5aca6750f90777003adad2b79849f Mon Sep 17 00:00:00 2001 From: Wim Looman Date: Tue, 6 Nov 2018 19:47:18 +0100 Subject: [PATCH] impl Generator for Pin> --- src/liballoc/boxed.rs | 10 ++++++++++ src/test/run-pass/generator/pin-box-generator.rs | 13 +++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/test/run-pass/generator/pin-box-generator.rs diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 1fd8aa98cc3..14a1242e3e5 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -882,6 +882,16 @@ impl Generator for Box { } } +#[unstable(feature = "generator_trait", issue = "43122")] +impl Generator for Pin> { + type Yield = G::Yield; + type Return = G::Return; + + fn resume(mut self: Pin<&mut Self>) -> GeneratorState { + G::resume((*self).as_mut()) + } +} + #[unstable(feature = "futures_api", issue = "50547")] impl Future for Box { type Output = F::Output; diff --git a/src/test/run-pass/generator/pin-box-generator.rs b/src/test/run-pass/generator/pin-box-generator.rs new file mode 100644 index 00000000000..c3136f5c0ec --- /dev/null +++ b/src/test/run-pass/generator/pin-box-generator.rs @@ -0,0 +1,13 @@ +// run-pass + +#![feature(generators, generator_trait)] + +use std::ops::Generator; + +fn assert_generator(_: G) { +} + +fn main() { + assert_generator(static || yield); + assert_generator(Box::pin(static || yield)); +}