

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.
academic fraud has always existed