They had to patch the Rust compiler to natively support AutoDiff.

Contrast with Julia where it can be a regular Julia library,

I mean you can do autodiff with a regular library in Rust. Enzyme is just a very specific type of autodiff which transforms after some compilation has taken place.

I don't know that you can match something speedwise like a JIT or Expression Templates in rust though without using something like Enzyme.