diff options
| author | kennytm <kennytm@gmail.com> | 2018-03-25 01:26:34 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-25 01:26:34 +0800 |
| commit | e2b89221f1fb3384ee707cef4bb78ab7fb6296ac (patch) | |
| tree | 42f50f0781c95afe4f1ee4d41c3a31c33828df01 /src/doc | |
| parent | 311814a1a963247df61a2725150a2f3fb37218df (diff) | |
| parent | 57896abc38f56dce27ca9d4642c18f44be8db620 (diff) | |
| download | rust-e2b89221f1fb3384ee707cef4bb78ab7fb6296ac.tar.gz rust-e2b89221f1fb3384ee707cef4bb78ab7fb6296ac.zip | |
Rollup merge of #49194 - Zoxc:unsafe-generator, r=cramertj
Make resuming generators unsafe instead of the creation of immovable generators cc @withoutboats 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() }; } ``` |
