1. T的layout可能包含未初始化的u8, 比如padding
2. addr() 和 length() 可能返回无效的值, unsafe 代码不能依赖 safe 代码的正确实现
3. T可能是ZST. 修复的话,取决于具体要求可以在遇到到ZST时 panic, 返回 null, 返回 NonNull::dangling() 等等
4. read_exact 的实现有可能会读取其入参的内容, 从而访问到未初始化的内存. 其实严格来说那个 set_len 的 safety 需求就没有满足. 修复的话可以将 buf 改成 vec![0; expected], 或者使用还在 unstable 的 ReadBuf api |