Rust - The journey so far

Previously published

This article was previously published on len-learns-rust.com. A full index of these articles can be found here.

I’ve now built a generic IdManager which does everything I want it to do, for now. I’ve bumbled along in a very non-scientific manner, mostly using the compiler errors to guide me towards things I’ve then looked up on the web. The code works and is tested, but it’s now time to go back to the books with a series of questions that this journey has got me thinking about:

  1. I’ve stumbled upon the “Interior Mutability Pattern” and solved it using std::sync::Mutex and I hope this means that I can use the code across multiple-threads, but I haven’t tried that yet and the Mutex solution isn’t the only way to approach this, especially if you don’t need multiple threads.

  2. My “Smart Pointer” could follow the idiomatic Rust Smart Pointer pattern a bit more closely and implement dref() rather than an explicit value() method.

  3. I’d like to understand Generics a bit more, I think I’ve just stumbled across something that works without really understanding everything.

  4. I’m keen to remove the test duplication, possibly by using macros…

I think my next step will be to explore threading and try and use this code from multiple threads. Once that’s done I may understand how to use the “Interior Mutability Pattern” in single threaded code and see if Rust prevents me making mistakes if I try and use that code with multiple threads.

A word from the future

When I finally got around to using this code from multiple threads, here, I found that I needed a few small changes.

Join in

The code can be found here on GitHub each step on the journey will have one or more separate directories of code.

Of course, there may be a better way; leave comments if you’d like to help me learn.