Crate workflow_core

source ·
Expand description

github crates.io docs.rs license

workflow_core is a part of the workflow-rs framework, subset of which is designed to function uniformly 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 thread-safe 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 auto detection, allowing to identify the operating environment at runtime
  • home and data folder access (useful when combined with workflow_store crate)

Modules§

  • Abortable trigger, can be used to cancel (abort) an asynchronous task.
  • async_std::channel re-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 Id that renders its value as a base58 string
  • LookupHandler provides 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.
  • task module provides helper functions for use with async closures that operate uniformly in native (tokio-backed) and WASM (async_std-backed) environments (i.e. a web browser).
  • time module provides re-export of WASM32-compatible Instant and provides platform neutral implementations for unixtime_as_millis_u128() and unixtime_as_millis_f64().
  • Trigger crate re-exports and shims
  • buffer slicing and other utilities

Macros§

  • Re-export of cfg_if crate. The main macro provided by this crate. See crate documentation for more information.
  • Seal macro that prevents accidental 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 a try_from(u8) to enum conversion.
  • Associates u16 values to each enum value and declares a TryFrom<u16> implementation for this enum allowing a try_from(u16) to enum conversion.
  • Associates u32 values to each enum value and declares a TryFrom<u32> implementation for this enum allowing a try_from(u32) to enum conversion.
  • Associates usize values to each enum value and declares a TryFrom<usize> implementation for this enum allowing a try_from(usize) to enum conversion.