An interesting article that lays out a problem and goes through a few different solutions, some of which I haven’t thought about much before.

I’m working on a video game in Rust, and I’m running into this kind of modelling problem when it comes to keeping track of the game state. So far I’ve refactored something that resembles Approach 5 into something that looks more like Approach 3. As I get more confident about the final shape of the data, it (seemingly) becomes a better idea to represent it in a more structured way.

  • chrash0@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    4 days ago

    one that i’ve used in the past but isn’t mentioned here is type state based. when developing a file upload service i have a File struct with different states that implement FileState, ie struct File<TState: FileState>. Uploading, Staged, and Committed. Uploading contains a buffer and some block IDs, Staged has no buffer but includes the block IDs, and Committed is just a marker. they can have different methods based on their type state like impl File<Uploading>. this gives us the type safety of, for example, not allowing a partially uploaded file to be committed, while still sharing some state like ID, etc.