| fn main() { |
| if let x = x && x {} |
| |
| if xxx && let x = x {} |
| |
| if aaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaa && aaaaaaaaa && let Some(x) = xxxxxxxxxxxx && aaaaaaa && let None = aaaaaaaaaa {} |
| |
| if aaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaa && aaaaaaaaa && let Some(x) = xxxxxxxxxxxx && aaaaaaa && let None = aaaaaaaaaa {} |
| |
| if let Some(Struct { x:TS(1,2) }) = path::to::<_>(hehe) |
| && let [Simple, people] = /* get ready */ create_universe(/* hi */ GreatPowers).initialize_badminton().populate_swamps() && |
| let everybody = (Loops { hi /*hi*/ , ..loopy() }) && summons::triumphantly() { todo!() } |
| |
| if let XXXXXXXXX { xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyy, zzzzzzzzzzzzz} = xxxxxxx() |
| && let Foo = bar() { todo!() } |
| } |
| |
| fn test_single_line_let_chain() { |
| // first item in let-chain is an ident |
| if a && let Some(b) = foo() { |
| } |
| |
| // first item in let-chain is a unary ! with an ident |
| let unary_not = if !from_hir_call |
| && let Some(p) = parent |
| { |
| }; |
| |
| // first item in let-chain is a unary * with an ident |
| let unary_deref = if *some_deref |
| && let Some(p) = parent |
| { |
| }; |
| |
| // first item in let-chain is a unary - (neg) with an ident |
| let unary_neg = if -some_ident |
| && let Some(p) = parent |
| { |
| }; |
| |
| // first item in let-chain is a try (?) with an ident |
| let try_ = if some_try? |
| && let Some(p) = parent |
| { |
| }; |
| |
| // first item in let-chain is an ident wrapped in parens |
| let in_parens = if (some_ident) |
| && let Some(p) = parent |
| { |
| }; |
| |
| // first item in let-chain is a ref & with an ident |
| let _ref = if &some_ref |
| && let Some(p) = parent |
| { |
| }; |
| |
| // first item in let-chain is a ref &mut with an ident |
| let mut_ref = if &mut some_ref |
| && let Some(p) = parent |
| { |
| }; |
| |
| // chain unary ref and try |
| let chain_of_unary_ref_and_try = if !&*some_ref? |
| && let Some(p) = parent { |
| }; |
| } |
| |
| fn test_multi_line_let_chain() { |
| // Can only single line the let-chain if the first item is an ident |
| if let Some(x) = y && a { |
| |
| } |
| |
| // More than one let-chain must be formatted on multiple lines |
| if let Some(x) = y && let Some(a) = b { |
| |
| } |
| |
| // The ident isn't long enough so we don't wrap the first let-chain |
| if a && let Some(x) = y && let Some(a) = b { |
| |
| } |
| |
| // The ident is long enough so both let-chains are wrapped |
| if aaa && let Some(x) = y && let Some(a) = b { |
| |
| } |
| |
| // function call |
| if a() && let Some(x) = y { |
| |
| } |
| |
| // bool literal |
| if true && let Some(x) = y { |
| |
| } |
| |
| // cast to a bool |
| if 1 as bool && let Some(x) = y { |
| |
| } |
| |
| // matches! macro call |
| if matches!(a, some_type) && let Some(x) = y { |
| |
| } |
| |
| // block expression returning bool |
| if { true } && let Some(x) = y { |
| |
| } |
| |
| // field access |
| if a.x && let Some(x) = y { |
| |
| } |
| } |