monadic do notation in rust without using closures