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:

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

    • 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.

Tags

  • Rust

  • Actix

  • concurrency

  • chess