// FIXME: Once https://github.com/rust-lang/rust/pull/69201 makes its // way into stable, move this back into `project.rs #[test] #[project] fn project_if_let() { #[pin_project] enum Foo { Variant1(#[pin] A), Variant2(u8), Variant3 { #[pin] field: B } } let mut foo: Foo = Foo::Variant1(true); let foo = Pin::new(&mut foo).project(); #[project] if let Foo::Variant1(a) = foo { let a: Pin<&mut bool> = a; assert_eq!(*a, true); } else if let Foo::Variant2(_) = foo { unreachable!(); } else if let Foo::Variant3 { .. } = foo { unreachable!(); } }