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).
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
).
```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(()) } ```
```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 } ```