Expand description
infect
A variation on the Model-View-Intent (MVI) and State-Action-Model (SAM) paradigms using
- intents for rejecting or accepting user interaction and commands,
- (immediate) effects for updating the model according to observed events without feedback,
- tasks for inducing concurrent side-effects.
Naming
The semantic distinction of external triggers, inputs, or events (as in event sourcing) into intents and effects is the characteristic difference from existing approaches. Both stimuli are combined into a messages for transporting and feeding them into the system.
Each message induces at most one task for triggering side-effects.
Combining intent, effect, and task gives infect.
License
Licensed under the Mozilla Public License 2.0 (MPL-2.0) (see MPL-2.0.txt or https://www.mozilla.org/MPL/2.0/).
Permissions of this copyleft license are conditioned on making available source code of licensed files and modifications of those files under the same license (or in certain cases, one of the GNU licenses). Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work may be distributed under different terms and without source code for files added in the larger work.
Contribution
Any contribution intentionally submitted for inclusion in the work by you shall be licensed under the Mozilla Public License 2.0 (MPL-2.0).
It is required to add the following header with the corresponding SPDX short identifier to the top of each file:
// SPDX-License-Identifier: MPL-2.0
Structs
- Outcome of applying an effect to the model
- Domain-specific wrapper around a
MessageSender
- Task execution context
Enums
- Outcome of handling an intent
- An intent or an effect
- Outcome of processing a single message
- Outcome of consuming multiple messages
- Model change indicator
Traits
- A stateful model
- Render the model after changed
- Control rendering after applying effects
- Spawn concurrent tasks
Functions
- Receive and process messages until one of the stop conditions are encountered
- Create a buffered, MPSC message channel with limited capacity
- Process a single message
Type Aliases
- Isomorphic representation of
IntentHandled
as aResult
. - Buffered, MPSC message channel
- Message receiver for consuming messages
- Message sender for submitting messages