This is exactly what I am doing, but you shouldn't have to modify the request itself to pass temporary state
Eh, that's definitely a matter of taste. You definitely shouldn't have to pass an additional parameter everywhere you want context there's no absolutes here, just preferences.
Why not? Given Rust's semantics it's really no different than how Go's Context seems to be used, just more efficient.