diff options
| author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-03-20 00:48:41 +0100 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-03-21 00:09:58 +0100 |
| commit | 57896abc38f56dce27ca9d4642c18f44be8db620 (patch) | |
| tree | f4534c634bbf6da82ad02dbac4855bae6d2a412a /src/doc | |
| parent | a04b88d1941644df01fa5e31dd43e0f57c13d938 (diff) | |
| download | rust-57896abc38f56dce27ca9d4642c18f44be8db620.tar.gz rust-57896abc38f56dce27ca9d4642c18f44be8db620.zip | |
Make resuming generators unsafe instead of the creation of immovable generators. Fixes #47787
Diffstat (limited to 'src/doc')
| -rw-r--r-- | src/doc/unstable-book/src/language-features/generators.md | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/doc/unstable-book/src/language-features/generators.md b/src/doc/unstable-book/src/language-features/generators.md index e8e2132dca2..8e888de90a9 100644 --- a/src/doc/unstable-book/src/language-features/generators.md +++ b/src/doc/unstable-book/src/language-features/generators.md @@ -36,11 +36,11 @@ fn main() { return "foo" }; - match generator.resume() { + match unsafe { generator.resume() } { GeneratorState::Yielded(1) => {} _ => panic!("unexpected value from resume"), } - match generator.resume() { + match unsafe { generator.resume() } { GeneratorState::Complete("foo") => {} _ => panic!("unexpected value from resume"), } @@ -69,9 +69,9 @@ fn main() { }; println!("1"); - generator.resume(); + unsafe { generator.resume() }; println!("3"); - generator.resume(); + unsafe { generator.resume() }; println!("5"); } ``` @@ -92,7 +92,7 @@ The `Generator` trait in `std::ops` currently looks like: pub trait Generator { type Yield; type Return; - fn resume(&mut self) -> GeneratorState<Self::Yield, Self::Return>; + unsafe fn resume(&mut self) -> GeneratorState<Self::Yield, Self::Return>; } ``` @@ -175,8 +175,8 @@ fn main() { return ret }; - generator.resume(); - generator.resume(); + unsafe { generator.resume() }; + unsafe { generator.resume() }; } ``` @@ -200,7 +200,7 @@ fn main() { type Yield = i32; type Return = &'static str; - fn resume(&mut self) -> GeneratorState<i32, &'static str> { + unsafe fn resume(&mut self) -> GeneratorState<i32, &'static str> { use std::mem; match mem::replace(self, __Generator::Done) { __Generator::Start(s) => { @@ -223,8 +223,8 @@ fn main() { __Generator::Start(ret) }; - generator.resume(); - generator.resume(); + unsafe { generator.resume() }; + unsafe { generator.resume() }; } ``` |
