It seems more likely that Rust, an expression language with pattern matching, has the thing which makes sense here because this is just a pattern match.
From Rust's point of view
let (a, b) = function_which_returns_a_pair();
is not special compared to the idiomatic:
while let Some(item) = stack.pop() { /* do stuff with items and the stack */ }
or if we hate tuples:
let [a, b] = function_returns_an_array_of_two_items();
From Rust's point of view
is not special compared to the idiomatic: or if we hate tuples: