Remix.run Logo
▲ ModernMech an hour ago

It's doing static analysis that many other languages don't do at compile time.

▲dralley an hour ago | parent [-]

This is not actually the main reason, most of the time.

Generics/monomorphization and how iterators work results in a lot of compiler bytecode that has to be churned through. More bytecode = longer compilation. It increases the size of the (debug) binaries, the debuginfo in general, causes performance issues with debug binaries in some situations unless you bump the optimization level, causes more IO, etc.

▲ModernMech an hour ago | parent [-]

Okay but if you don't use generics and monomorphization, then what explains it?

▲dralley 39 minutes ago | parent [-]

It's unlikely that many people are using Rust without using Option<T> or Result<T, U> a fair bit. Idiomatic Rust fundamentally uses a lot of generics. And a basic for loop expands into quite a lot of intermediate representation due to Iterator.

▲ModernMech 11 minutes ago | parent [-]

Other languages support generics, monomorphization, and iterators, but they're not as slow as Rust to compile, what's the reason for that?

▲moritzruth 3 minutes ago | parent [-]

AFAIK it's because of trait solving. And also not every language does monomorphization.