Rc/Arc <-> class types
Raw pointers <-> UnsafePointer/UnsafeMutablePointer
References <-> inouts
Trait objects <-> Protocol objects
Box <-> indirect enum (arguably)
Did I miss any?
Of the core language features, protocol objects are the only case where Swift uses reference counting and Rust does not.
There's a big difference between technically having manual memory management and having it actually widely used and practical.
Using unsafe to improve performance is not unfamiliar in Rust either, though Rust gives you better tools for building safe abstractions around it.
Shared ownership is routine in UI programming - think event handlers, etc. These are the apps most commonly written in Swift. Does Rust avoid needing shared ownership for these types of apps? If so, how?
Similar perhaps, but not that similar.