Is reference counting fundamentally required in safe Rust?

67 points HermesonBF

Going directly to the point, why Rust needs Rc (reference counting) in the first place? I mean, is it to make some classes of problems easier to code in or is it something fundamental with the nature of computing so that you cannot make a language that is memory safe without adding some greater than zero overhead somewhere (if not by garbage collection, by reference counting)? Are there any classes of algorithms that are simply impossible to write in safe Rust without using reference counting at all? Someone asked a similar question here but it does not answer exactly this question I asked, if reference counting in safe Rust is required or is there some code somewhere that at least in theory can write any computable algorithm without using reference counting at all.