crates.io  TinyGo Version

wasmCloud Number Generator Interface

This is the interface definition for the wasmCloud built-in interface that is guaranteed to be supported by all runtime hosts, wasmcloud:builtin:numbergen. The number generator interface provides for the creation of things like random numbers, random numbers within a given range, and globally unique identifiers (GUIDs).

Capability Provider Implementations

There are no external implementations of this provider as all implementations of the wasmcloud:builtin:numbergen contract are built directly into the host runtime(s).

This interface defines the wasmCloud built-in logging interface that comes with each of our supported host runtimes. Actors that use this interface must have the capability contract wasmcloud:builtin:numbergen in their claims list (wash claims sign --cap wasmcloud:builtin:numbergen).

Example Usage

🦀 Rust

```rust use wasmbusrpc::actor::prelude::*; use wasmcloudinterfacelogging::info; use wasmcloudinterfacenumbergen::{generateguid, random32, randomin_range};

async fn generaterandom() -> Result<(), RpcError> { // Generate a Globally Unique ID (GUID) let guid: String = generateguid().await?; info!("Generated GUID: {}", guid); // Generate a random u32 let randomnum: u32 = random32().await?; info!("Generated number: {}", randomnum); // Generate a random u32 within an inclusive range let randomrange: u32 = randominrange(0, 55).await?; info!("Generated number between 0 and 55: {}", random_range); Ok(()) } ```

🐭 Golang

```go import numbergen "github.com/wasmcloud/interfaces/numbergen/tinygo"

func GenerateThings(ctx *actor.Context) (string, error) { client := numbergen.NewProviderNumberGen()

// Generate a random U32 randNum, _ := client.Random32(ctx)

// Generate a random U32 within an inclusive range randNum010, _ := client.RandomInRange(ctx, numbergen.RangeLimit{Min: 0, Max: 10})

// Generate a Globally Unique ID (GUID) guid, _ := client.GenerateGuid(ctx)

return "", nil } ```