/// Encapsulate IO actions
///
/// IO actions are used for both input and output devices. For example, a temperature sensor may
/// be polled for its current temperature, and a heater may be turned on or off.
///
/// These actions are used to schedule IO events and is used within [`crate::controllers::Controller`]s
/// to keep track of future events.