The thing is that, outside of unsafe code, Rust programs do not and should not ever have to think about raw memory addresses. We have safe reference and box types whose semantics are defined abstractly and do not expose any notion of a machine-level memory address. Thus it seems strange for the naming of these types to reflect this low-level detail, because they are not primarily intended for use only with unsafe code. (This is the same thing which felt off to me about the earlier suggestions for intptr and uintptr.)
The aspect which safe Rust code (i.e. what should be the vast majority of Rust code) cares about is that these are the types which are appropriate for representing the sizes of and indexes into arrays (and presumably other kinds of collections as well).
This is indeed an interesting follow-on question, and also ties into the choice of the default type for integer literals.
The defining characteristic of the int and uint types, resp. i and u suffixes are that, because they’re so “sweet” and culturally ingrained, they’re what people will habitually use whenever they don’t feel like thinking about it. Basically, the implied meaning of a type called “int” is that this is the type which it’s appropriate to use “most of the time”.
The question is whether such a type exists. Is there an integer type which it is appropriate to use “most of the time”? My feeling is that we should have a type called int, defined as this type, if and only if such a type exists. In other words, if by giving them a type called int, we won’t be giving people a false sense of security and leading them into mistakes. If, most of the time, you can’t avoid having to think about the correct choice of type without implicating the correctness of the program, then we would be doing our users no favors by pretending otherwise, and it would be preferable to force a decision.
The only remotely plausible candidates for being int are i32, i64, and isize. One thing we could do is try to collect data, not necessarily about which type is used, but which types would be correct for the types of integers in existing Rust code. (There is the possibility that more than one of these would be correct, i.e. that it doesn’t matter, and also that none of them would, e.g. that you actually want i8.) If we find a clear majority for any of the three then most likely that type should be int. Otherwise, most likely none of them should. (Conversely, if we find lots of cases where int is used and it’s not correct, then that might be an argument against having an int.) But doing this would probably be a whole lot of effort.
(Most of the above discussion should also apply equally to uint, the u suffix, u32, u64, and usize, in the case where the programmer knows that she wants an unsigned type, but not what size.)