The following two lines:
let x = Box::new((\"slefj\".to_string(), \"a\".to_string()));
let (a, b) = *x;
produce the error:
The good news is that your original code works as-is now that non-lexical lifetimes are enabled by default:
fn main() {
let x = Box::new(("slefj".to_string(), "a".to_string()));
let (a, b) = *x;
}
The borrow checker's capability to track the moves out of the box is enhanced, allowing the code to compile.