Your project is dynamic:
Make it traceable
Constantly monitor
Backpressure is the process of "pushing back" on producers that are to fast.
This throttles the system, but allows it to not fail.
bounded channels are predictable
unbounded are more dynamic
bounded provide backpressure
unbounded are useful if you know they are never beyond a certain size
Tasks can hold state
Otherwise, Mutexes and RWlocks allow sharing
Dropping a futures means cancelling it
Be aware of what happens if it is cancelled
Make sure your signal handling is centralized
Every component should subscribe to a cancel notification
Futures are not allowed to move in Memory
The type that describes that is called Pin
Pinning is hard, but there’s support libraries
Futures are poll
based - that means they get asked if they are complete.
This happens an infinite number of times, until they mark themselves complete
The process is optimised through the Waker
type
Implementing poll yourself is rather easy