If you get stuck on a solution chances are someone else has already solved it in your language of choice which can also be great for learning.
It should make you have go into text and file processing (including regexps) and basic data structures (lists/arrays, hashmaps, trees, graphs). Maybe GUIs or image processing: it's never essential, but sometimes it helps in debugging a puzzle, or it's just fun to make a visualization of the solution. Even simple parsers.
However, typically you wouldn't touch things like async, networking or writing a server. Though you could try writing an HTTP API client that automates downloading inputs, many people do it.
I'd still recommend it mostly because it's very fun, in my experience, which keeps you motivated.
In the past I have made a point of doing AOC in a language I didn't know or was planning to learn. Maybe rust this year...?