3 #![feature(if_let_guard, let_chains)]
5 fn check_if_let(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
6 if let Some(first) = opt
7 && let Some(second) = first
8 && let Some(third) = second
18 fn check_let_guard(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
20 Some(first) if let Some(second) = first && let Some(third) = second && third == value => {
29 fn check_while_let(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
30 while let Some(first) = opt
31 && let Some(second) = first
32 && let Some(third) = second
41 assert_eq!(check_if_let(Some(Some(Some(1))), 1), true);
42 assert_eq!(check_if_let(Some(Some(Some(1))), 9), false);
44 assert_eq!(check_let_guard(Some(Some(Some(1))), 1), true);
45 assert_eq!(check_let_guard(Some(Some(Some(1))), 9), false);
47 assert_eq!(check_while_let(Some(Some(Some(1))), 1), true);
48 assert_eq!(check_while_let(Some(Some(Some(1))), 9), false);