Note that the correct restriction is not !Drop but that the type has no drop glue.
What do you mean by no drop glue? That none of the fields are Drop? (and none of the fields on those fields are Drop, and so on recursively).
what if making a write-once pointer to an initialized struct/etc causes Drop
No this won’t work, because creating a pointer, shouldn’t do anything on it’s own, but get an address. Otherwise, it would lead to subtle and easy to miss bugs.