I want to create a global hash map that maps strings to vectors of colors. This data needs to be queried by multiple functions and should just be hard coded into the program. That doesn’t seem possible.

Now, how is the right ™ way to do something like that in Rust? What if you need just a bunch of data structures from the beginning of the program until its end where some of the data needs to allocated?

You may be able to use something like lazy_static.

https://docs.rs/lazy_static/latest/lazy_static/

permalink
report
reply
3 points

I heard about this, but I wasn’t sure it was the right way. Or if Rust developers just straight up avoid situations like this.

permalink
report
parent
reply
4 points

lazy_static was the standard way as far as I’m concerned until this month. OnceCell or OnceLock should fill this role now.

permalink
report
parent
reply

I generally avoid this situation. At best I’ll create an Rc<HashMap<T, U>> to pass around. I find that having a need for a static variable can be an indication of bad design. It often makes the code that depends on it untestable.

permalink
report
parent
reply
6 points
*

Is the hash map immutable? If so, look at the rust-phf crate.

permalink
report
reply
5 points

Just make a function that matches string and outputs your colors. It’ll be faster and easier than any extra crate.

permalink
report
reply
2 points

The thing is, I also want to query all possible colors. And that would then be in a different function so I’d have to change two functions whenever I add a new color and I don’t like that.

permalink
report
parent
reply
2 points

Then make a vector of colors, and make a function that matches string to index in that vector

permalink
report
parent
reply

Rust Programming

!rust@lemmy.ml

Create post

Community stats

  • 75

    Monthly active users

  • 250

    Posts

  • 775

    Comments