There are a number of algorithmic tricks to make the state-space search dramatically faster, for example variable ordering, value-ordering, forward-pruning, backjumping, LDS/DDS. Here's a paper by my PhD advisor Matt Ginsberg describing Dr Fill, which is probably currently the world's fastest crossword-filler. A Rust implementation of the solver described here would be a really interesting project.