Automatic initialization with a pattern is not necessarily enough. An assignment like `struct foo bar = baz` will not necessarily fully initialize `bar` and may leave padding bytes. Later on, copying the struct across a trust boundary will likely copy padding bytes, leaking data.