Why raw pointer doesn't own type parameter T for dropcheck

Because it is designed not to own. If you need an owning pointer, use Box.

This is like asking "why there is no chocolate mousse in this burger?". Chocolate mousse is delicious, but it does not belong in a burger. If you want chocolate mousse, then that's fine and you can choose to eat it instead of a burger. But at other times you may want a burger instead.