|  | //@ check-pass | 
|  | //@ edition:2018 | 
|  |  | 
|  | #![feature(if_let_guard)] | 
|  |  | 
|  | fn main() {} | 
|  |  | 
|  | struct StructA {} | 
|  | struct StructB {} | 
|  |  | 
|  | impl StructA { | 
|  | fn fn_taking_struct_b(&self, struct_b: &StructB) -> bool { | 
|  | true | 
|  | } | 
|  | } | 
|  |  | 
|  | async fn get_struct_a_async() -> StructA { | 
|  | StructA {} | 
|  | } | 
|  |  | 
|  | async fn ice() { | 
|  | match Some(StructB {}) { | 
|  | Some(struct_b) if get_struct_a_async().await.fn_taking_struct_b(&struct_b) => {} | 
|  | _ => {} | 
|  | } | 
|  | } | 
|  |  | 
|  | async fn if_let() { | 
|  | match Some(StructB {}) { | 
|  | Some(struct_b) if let true = get_struct_a_async().await.fn_taking_struct_b(&struct_b) => {} | 
|  | _ => {} | 
|  | } | 
|  | } |