Actually, `*T` and `*U` are references to arrays, and thus `*U` is *layout-substitutable* for `*T` if `[U]` is *layout-substitutable* for `[T]`, which means that: `U` is *layout-identical* with `T` and the instance of `[U]` is longer than the instance of `[T]`.

But you do touch a point here that I raise later on in the *Opened Doors* section: while memory-wise the substitution is possible; there is an issue with methods (of any kind). Rust uses nominal-typing, not structural-typing, and thus changing the type (name) changes the interpretation of memory with possible drastic effects.