Modules

Modules undoubtedly are one of the most powerful features in Rhai. They provide infinite extensibility to ewwii.

Every module follows the syntax:

import "std::env" as env;
let home = env::get_home_dir(); // returns `$HOME` env var value

This allows you to write expressive, modular Rhai code with functions grouped logically under std or custom namespaces.

std::env

The std::env module provides access to common system-level environment queries. It is supported on Unix-based systems (Linux, macOS).

Usage

import "std::env" as env;

// Get an environment variable, or fallback to a default
let shell = env::get_env("SHELL") ?? "unknown";

// Set an environment variable (current process only)
env::set_env("DEBUG_MODE", "true");

// Get the user's home directory
let home = env::get_home_dir() ?? "/home/user";

// Get the current working directory
let cwd = env::get_current_dir() ?? "/";

// Get the current username
let user = env::get_username() ?? "nobody";

Functions

FunctionDescription
get_envGets an environment variable's value
set_envSets an environment variable (current process only)
get_home_dirReturns the current user's home directory path if found
get_current_dirReturns the current working directory
get_usernameGets the current user's username from $USER

std::text

The std::text module provides access to more string manipulation that Rhai lacks.

Usage

import "std::text" as text;

// Convert a string to a URL-friendly slug
let slug = text::to_slug("Ewwii is cool!"); // output: "ewwii-is-cool"

// Convert a string to camelCase
let camel = text::to_camel_case("my cool project"); // output: "myCoolProject"

// Truncate a string to N characters (without splitting in the middle of a character)
let short = text::truncate_chars("hello world", 5); // output: "hello"

// Convert a string to uppercase
let upper = text::to_upper("hello"); // output: "HELLO"

// Convert a string to lowercase
let lower = text::to_lower("HELLO"); // output: "hello"

Functions

FunctionDescription
to_slugConverts a string into a lowercase, hyphen-separated slug
to_camel_caseConverts a string into camelCase, removing non-alphanumeric characters
truncate_charsTruncates a string to a maximum number of characters (UTF-8 safe)
to_upperConverts a string to uppercase
to_lowerConverts a string to lowercase

Future Plans

Other modules coming soon under std:

  • std::fs — Filesystem operations (e.g., read_file, write_file, list_dir)
  • std::path — Path helpers (e.g., join, basename, dirname)
  • std::time — Time utilities (e.g., now, sleep, format_time)
  • std::math — Numeric functions (e.g., clamp, lerp, map_range)
  • std::color — Color parsing and manipulation (e.g., hex_to_rgb, blend)

You can easily extend or override these by adding .rhai modules in your config path.