Нет, компьютер ничего сам не решает. Размер типа int/uint всегда такой, чтобы вмещать в себя любой машинный адрес на данной платформе. Например, если бы Rust запускался на какой-нибудь 16-битной системе, то размер int/uint был бы как минимум 16 бит (но, скорее всего, он был бы равен 16 бит). На Win32 размер должен быть как минимум 32 бита, потому что адрес в Win32 длиной 32 бита. И так далее. Но размер типа, естественно, фиксирован при компиляции и зависит от целевой (target) платформы.