this post was submitted on 08 Jul 2023
12 points (92.9% liked)

Rust

6046 readers
2 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

My program is small enough that in TS/JS I'd normally just store the data in some global variable to be access from whatever elsewhere in the app. But with Rust from what I can tell this doesn't seem to be a common practice. How should i handle this?

More specifically, I need to:

  1. program start, fetch data from my db (DONE)
  2. store this data somehow somewhere
  3. access said data (for read only in this use case)

Thanks for any insights here!

you are viewing a single comment's thread
view the rest of the comments
[–] mipli@programming.dev 11 points 1 year ago (1 children)

I would consider just passing along the data directly to the functions that need access to it, rather than storing in a global state. If passing each piece of data along as separate parameters is a bit much, you can always create struct Context { ... } which keeps tracks of whatever you need and pass that around.

Nothing wrong with using OnceCell as @heartlessevil@lemmy.one suggested, but I've found that passing it as an argument feels a bit better.

[–] nerdblood@programming.dev 4 points 1 year ago (1 children)

I might not need global state, the more I think about it. I'll start with passing a struct and see where that gets me, thanks!

[–] nous@programming.dev 3 points 1 year ago

Using OnceCell for inviting some static resource, like a regex expression. Or for storing something like a internal cache for a function is ok. But I would avoid using it to hold a application wide state that anything can drop in and modify. Passing around application state where it is needed is generally much better and far easier to test things with.