I'm not a fan of Result::void(). It feels unnecessarily terse and beginner unfriendly compared to foo.map(drop).map_err(Into::into), where you can easily tell exactly what the semantics are just by reading the set of method calls.
I definitely lean more towards try blocks. My only complaint for them is the extra indentation but I'm hoping we can also get function equals or some other form that allows us to collapse the blocks easily.
fn foo() -> Result<(), Error> = try {
// ....
}