Programming languages, even so-called general purpose ones, really need to have a general niche. Swift is for application programming while Rust is for systems programming. Which doesn’t mean that they can’t do things in the other niche. But it does mean that they will not be used to such a wide extent that they will be seen as "better" than the other language for that opposite niche.
One illustrative facts is that Rust in practice cares about each individual allocation. Meanwhile Swift has the wonderful value-semantics collection implemented by way of copy-on-write (cow) atomically reference-counted pointers.