Almost every time I've ever tried to silence the type checker (in any other language) it resulted in a bug.
Does it make you slower? Definitely at times, but it's mostly OK, and the code is pretty damn clean. You can check out our repo to see how it looks[1].
Edit: we don't use Actix, we use Axum, but the same holds for Actix too.
[1]: https://github.com/integer32llc/rust-playground/pull/777
What does it even mean? You can't silence a type checker.
[0]: https://www.typescriptlang.org/docs/handbook/type-compatibil...
My point was that having the ability to perform "fearless refactoring" to improve architecture and adapt to changing needs of the software needs ruthless type system support to catch the non-obvious areas that you just broke and make sure that API contracts are still correct and to make sure you're not deserializing random stuff into `interface{}` or worse, `Any`, `Value` or `void *`.
Erlang would beg to differ, and it has been continuously running on systems with uptimes longer than rust has existed.
Rust is GREAT for that.
Is not the safety (borrow checker) but the combination of: Bare structs, enums, pattern matching and some traits (like Into) that make a breeze modeling business rules.
The problem is getting to that point.
I only tried Rust once, two years ago. The type system was fighting me all the way: the types different libraries were using were incompatible with each other, there was no obvious way to properly convert between them, finding proper signatures and behaviors was pain as many things were in traits or macros etc.
A lot of this comes down to tooling and ecosystem maturity, so things may have improved.
This aside, you'll still battle with the compiler. As to what you're battling depends on what you're building.
I still write Python for quick scripts, but if it's gonna be a page or more of logic I give up and write it in Rust. Compile times for quick scripts, in practice, don't really bother me, and cargo is fantastic for "just work please".