you are viewing a single comment's thread
view the rest of the comments
[–] 4 points 1 year ago (1 child)

I went the "only let introduces bindings" route, and I'm pretty happy so far:

if (left.next(), right.next())
... is (Some(let l), Some(let r)) { /* use l and r */ }
... is (Some(let l), None       ) { /* use l       */ }
... is (None,        Some(let r)) { /* use r       */ }
... is (None,        None       ) { /* use nothing */ }
}
  • source
  • parent
  • hideshow 1 child comment
  • Yeah, they could literally have the same syntax as now, but w/ let when introducing a variable. So:

    match (left.next(), right.next()) {
        (Some(let l), Some(let r)) => {}
        (Some(let l), None) => {}
        (None, Some(let l)) => {}
        (None, None) => {}
    }
    

    Or you could put the let before the Some(...) as let Some(l), which allows us to keep the current if let Some(...) = ... syntax. Either of those would feel more consistent than the current implementation.

  • source
  • parent