I find this staggeringly hard to believe. Most bugs are logic errors. How does Rust or Haskell prevent these?
Are they? IME most bugs are type errors.
Or rather, IME most bugs are logic errors only because I've excluded the possibility of type errors by using a sophisticated type system.