Split Rust implementation into modules and crates

Now it looks neater!
All I have to do is change the function names around,
and modify the code a bit -- perhaps move back to vectors
for simplicity now that everything works