Feedback After 6 Months of Using RUST

By clecam, 26 January, 2025
learning rust after 6 months

The generated image is based on the simple prompt: "Create a humorous image highlighting the difficulty of programming in RUST." Even if the result is not perfect, I find it very relevant, and it made me laugh. I think every RUST programmer has struggled with the borrow checker.

I have developed a chess game in RUST offering a UCI allowing engine tournament. The link is the following: https://github.com/christophelc/chess_rust

The program is based on RUST and Actix actors.

  • UCI interface: Compatible with tournament play.
  • Engine algorithms:
    • Iterative Deepening depth-first search with alpha beta pruning (other engine: minimax, mat solver, MCTS experiment)
    • Additional experiments include Minimax, mate solver, and MCTS.
  • Heuristics: 
    • Null move pruning
    • Capture horizon effect
    • Move preordering
    • Transposition tables
    • Killer move heuristic
    • Aspiration windows
  • FEN, SAN, EPD notations

Feedback and Observations:

  • RUST Ecosystem:
    • Cargo offers many useful tools like cargo fmt for code formatting and cargo clippy for improving code quality.
  • Testing
    • Unit and Integration tests are well integrated
  • Learning Rust with AI Assistance:
    • AI tools can make learning Rust easier, but it’s essential to fully understand the code to stay on the right track.
  • Actix Framework:
    • Actix is an excellent framework, and it generally removes the need to spawn threads manually.
    • However, be cautious when performing long computations in the Actix event loop, as this can block it.
  • Expressivness
    • Less powerful than Scala
    • Sometimes, we need to split an expression in several parts due to temporary objects not managed by the compiler
  • Type Management:
    • Be mindful of type leaking. I use generics sparingly to avoid unnecessary complexity.
  • Concurrency in Rust:
    • Sharing objects safely between threads often requires using Mutex and Arc.

Comments