| I'm building an HTTP CRUD app on top of PostgreSQL. I have previously used Go for various CRUD apps. The experience is better except for compile time. My favorites: 1. Much more expressive type system: no more `interface{}`. 2. Algebraic data type with `enum`. Exhaustive check. 3. `serde` crate is lightyears ahead of Go's `json:"wtf"`. 4. Compile-time checks against DB with `sqlx` crate. 5. Logging is a breeze with `tracing::instrument`. 6. Using macros to reduce boilerplate has better UX than Go codegen. What these give me is more confidence in development/refactoring because the compiler can guide me most of the way. Low lights: 1. Build time. 2. Async is still clunky. e.g. Try to implement an `actix-web` extractor or middleware. 3. Please just stablize nightly rustfmt features already. |
Would you mind sharing some of your experiences? Do you find the 'stubbornness' of the compiler frustrating at all? How do you find the tooling?
Also, I've considered Diesel for ORM, so was wondering if you've been using that too.