Have you dropped by IRC? Always happy to help answer questions in real-time.
> how to to either move a variable out of a block,
Blocks evaluate to a value, so if it's a movable type, it will move.
let x = {
let s = String::new();
// stuff happens with s
s
};
Here, s will move out of the block, and into x.
> more importantly define a lifetime on `Ok(r) => r,` so that the result can escape the block.
Lifetimes cannot extend the life of something, they are descriptive, not prescriptive. So I think you might be trying something that's impossible...