Crate workflow_core
source ·Expand description
workflow_core is a part of the workflow-rs
framework, subset of which is designed to function uniformally across multiple
environments including native Rust, WASM-browser and Solana OS targets.
This is a general-purpose crate that provides platform-uniform (native and WASM) abstractions for:
- async channels
 - task spawn, sleep and interval functions
 - random identifiers
 - async-friendly and threadsafe event triggers
 - time (Instant and Duration) as well as functions to obtain UNIX time (native and WASM)
 - yield_executor() function to yield Rust executor to browser using 
requestAnimationFrame()(this prevents async Rust applications from locking down the Browser UX) - runtime autodetection, allowing to identify the operating environmnet at runtime
 - home and data folder access (useful when combined with 
workflow_storecrate) 
Modules
- Abortable trigger, can be used to cancel (abort) an asyncronous task.
 async_std::channelre-exports and shims- Access to home and data folder (windows) when running natively or within Node.js
 - Rust enum conversion utilities
 - Access to environment variables when running natively or on top of Node.js (via
process.env). - Miscellaneour helper traits.
 - Hex serialization traits
 - 64-bit random identifier struct
Idthat renders its value as a base58 string LookupHandlerprovides ability to queue multiple async requests for the same key into a group of futures that resolve upon request completion.- The prelude module re-exports the most commonly used traits and types from the workflow_core crate.
 - Provides functions that allow to detect the runtime environment. These functions can be used to detect whether the code is running in a browser, node.js or native OS, the type of the underlying OS (Windows,Linux,MacOS,*BSD) as well as the type of a web environment (Browser or NWJS). This is useful for an application of an API to detect which environment it is operating under and subsequently restrict the functionality to the capabilities to this environment.
 - Sendable NewType for automatic Send marker wrapping of JS primitives.
 timemodule provides re-export of WASM32-compatibleInstantand provides platform neutral implementations forunixtime_as_millis_u128()andunixtime_as_millis_f64().- Trigger crate re-exports and shims
 - buffer slicing and other utilities
 
Macros
- Re-export of
cfg_ifcrate. The main macro provided by this crate. See crate documentation for more information. - Seal macro that prevents acceidental modification of the enclosed source code by hashing the source code and comparing it to the supplied hash. If the code is modified, the macro will fail to compile, and the developer will need to change the hash value. This is useful for locking down sensitive parts of the code to prevent their accidental change.
 - Associates u8 values to each enum value and declares a
TryFrom<u8>implementation for this enum allowing atry_from(u8)to enum conversion. - Associates u16 values to each enum value and declares a
TryFrom<u16>implementation for this enum allowing atry_from(u16)to enum conversion. - Associates u32 values to each enum value and declares a
TryFrom<u32>implementation for this enum allowing atry_from(u32)to enum conversion. - Associates usize values to each enum value and declares a
TryFrom<usize>implementation for this enum allowing atry_from(usize)to enum conversion. 
Attribute Macros
- dynamically configured re-export of async_trait as workflow_async_trait that imposes
Sendrestriction in native (non-WASM) and removesSendrestriction in WASM builds.