Playing with rust async, and I wonder what the internal design cost of ruby's block_given / yield / anything takes blocks approach is. It's so ergonomic