"However the compiler must assume that a values with generic types move ownership, since they may be instantiated with a type like `~u32` which has a destructor."