An UTF8 String would have invariant of always having valid UTF8, omitting need for further UTF8 validation.
If you're working on bytes string in Zig the status of them is unknown, so you have to always validate even if it's just Utf8. In Rust you can omit Utf8 validation for bytes from a String.