In the most recent Advent of Code (2019), I did not finish all the challenges, but I enjoyed it a lot! My early decision to modularize some repetitive function really paid off in the later puzzles.
The most important concept of Rust language is borrowing. After things have been borrowed, it must be returned. As simple as this concept is, there may be lots of times one get frustrated by the compile errors of the Rust compiler. Oh, Rust compiler is so strict that Rust beginners will be very relieved if their codes compiles!