changed to pass tests
This commit is contained in:
@@ -353,9 +353,9 @@ But now, let's prevent the segfault from happening using `Pin`:
|
|||||||
#![feature(optin_builtin_traits)]
|
#![feature(optin_builtin_traits)]
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
|
|
||||||
pub fn test2() {
|
pub fn main() {
|
||||||
let mut gen1 = GeneratorA::start();
|
let gen1 = GeneratorA::start();
|
||||||
let mut gen2 = GeneratorA::start();
|
let gen2 = GeneratorA::start();
|
||||||
// Before we pin the pointers, this is safe to do
|
// Before we pin the pointers, this is safe to do
|
||||||
// std::mem::swap(&mut gen, &mut gen2);
|
// std::mem::swap(&mut gen, &mut gen2);
|
||||||
|
|
||||||
@@ -402,7 +402,7 @@ enum GeneratorState<Y, R> {
|
|||||||
trait Generator {
|
trait Generator {
|
||||||
type Yield;
|
type Yield;
|
||||||
type Return;
|
type Return;
|
||||||
fn resume(mut self: Pin<&mut Self>) -> GeneratorState<Self::Yield, Self::Return>;
|
fn resume(self: Pin<&mut Self>) -> GeneratorState<Self::Yield, Self::Return>;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum GeneratorA {
|
enum GeneratorA {
|
||||||
@@ -429,7 +429,7 @@ impl !Unpin for GeneratorA { }
|
|||||||
impl Generator for GeneratorA {
|
impl Generator for GeneratorA {
|
||||||
type Yield = usize;
|
type Yield = usize;
|
||||||
type Return = ();
|
type Return = ();
|
||||||
fn resume(mut self: Pin<&mut Self>) -> GeneratorState<Self::Yield, Self::Return> {
|
fn resume(self: Pin<&mut Self>) -> GeneratorState<Self::Yield, Self::Return> {
|
||||||
// lets us get ownership over current state
|
// lets us get ownership over current state
|
||||||
let this = unsafe { self.get_unchecked_mut() };
|
let this = unsafe { self.get_unchecked_mut() };
|
||||||
match this {
|
match this {
|
||||||
|
|||||||
Reference in New Issue
Block a user