diff options
| author | bors <bors@rust-lang.org> | 2022-05-27 01:01:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-05-27 01:01:15 +0000 |
| commit | 4f68efad64f6a54703521d465817b6103813694d (patch) | |
| tree | 5bb86ff9090628a5c214ac057b94b8d951de138b /compiler/rustc_data_structures/src | |
| parent | b2c9872c6c2c60c905e16bce0801934b86d15f95 (diff) | |
| parent | 5bf23f64cce3877434da31e74e376186986903a2 (diff) | |
| download | rust-4f68efad64f6a54703521d465817b6103813694d.tar.gz rust-4f68efad64f6a54703521d465817b6103813694d.zip | |
Auto merge of #96298 - petrochenkov:fromgen, r=estebank
libcore: Add `iter::from_generator` which is like `iter::from_fn`, but for coroutines instead of functions An equally useful little helper. I didn't follow any of the async-wg work, so I don't know why something like this wasn't added before.
Diffstat (limited to 'compiler/rustc_data_structures/src')
| -rw-r--r-- | compiler/rustc_data_structures/src/lib.rs | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs index 76ae17f28c6..0d072046d58 100644 --- a/compiler/rustc_data_structures/src/lib.rs +++ b/compiler/rustc_data_structures/src/lib.rs @@ -13,8 +13,6 @@ #![feature(control_flow_enum)] #![feature(core_intrinsics)] #![feature(extend_one)] -#![feature(generator_trait)] -#![feature(generators)] #![feature(let_else)] #![feature(hash_raw_entry)] #![feature(hasher_prefixfree_extras)] @@ -114,9 +112,6 @@ pub mod unhash; pub use ena::undo_log; pub use ena::unify; -use std::ops::{Generator, GeneratorState}; -use std::pin::Pin; - pub struct OnDrop<F: Fn()>(pub F); impl<F: Fn()> OnDrop<F> { @@ -135,26 +130,6 @@ impl<F: Fn()> Drop for OnDrop<F> { } } -struct IterFromGenerator<G>(G); - -impl<G: Generator<Return = ()> + Unpin> Iterator for IterFromGenerator<G> { - type Item = G::Yield; - - fn next(&mut self) -> Option<Self::Item> { - match Pin::new(&mut self.0).resume(()) { - GeneratorState::Yielded(n) => Some(n), - GeneratorState::Complete(_) => None, - } - } -} - -/// An adapter for turning a generator closure into an iterator, similar to `iter::from_fn`. -pub fn iter_from_generator<G: Generator<Return = ()> + Unpin>( - generator: G, -) -> impl Iterator<Item = G::Yield> { - IterFromGenerator(generator) -} - // See comments in src/librustc_middle/lib.rs #[doc(hidden)] pub fn __noop_fix_for_27438() {} |
