Variables de Entorno y Plataforma
En esta página
Variables de entorno
env.get(key) devuelve str | nil — combínalo con ?? para proveer un valor
por defecto sin ningún condicional adicional. env.set y env.remove permiten
mutar el entorno del proceso actual (útil para propagarlo a subprocesos o en
pruebas):
Define ZOLO_DEMO_VAR, la lee con fallback ??, y luego la elimina para mostrar
que env.get devuelve nil cuando la clave no existe.
// Feature: environment variables — `env.get`, `env.set`, `env.remove`
// Syntax: `env.get(key)` returns `str | nil`; `env.set(key, val)` mutates;
// `env.remove(key)` deletes; `env.all()` returns the full map.
// When to use: read config (`PORT`, `DATABASE_URL`), feature flags, secrets.
use std::env
// Set a var just for the demo.
env.set("ZOLO_DEMO_VAR", "hello-from-zolo")
// `env.get` returns nil if absent — combine with `??`.
let val = env.get("ZOLO_DEMO_VAR") ?? "(not set)"
print("ZOLO_DEMO_VAR = {val}")
// expected: ZOLO_DEMO_VAR = hello-from-zolo
// Typical config pattern: read with a default fallback.
let port = env.get("PORT") ?? "3000"
let log_level = env.get("LOG_LEVEL") ?? "info"
print("port: {port}, level: {log_level}")
// Clear it once we no longer need it.
env.remove("ZOLO_DEMO_VAR")
let removed = env.get("ZOLO_DEMO_VAR") ?? "(removed)"
print("after remove: {removed}")
// expected: after remove: (removed)
Detección de plataforma
env.os() devuelve "windows", "linux" o "macos"; env.arch() devuelve
"x64", "arm64" etc.; env.home_dir() devuelve el directorio home del
usuario actual o nil cuando no está disponible. Usa estos valores para
bifurcar comportamientos dependientes de la plataforma:
Imprime SO, arquitectura y home, luego demuestra una función list_cmd() que
elige dir o ls según el SO detectado.
// Feature: platform detection — `env.os()`, `env.arch()`, `env.home_dir()`
// Syntax: each is a no-arg function. `os()` returns `"windows"`,
// `"linux"`, or `"macos"`. `arch()` returns `"x64"`, `"arm64"`, etc.
// When to use: branching by platform (paths, different commands),
// multi-arch builds, telemetry.
use std::env
let os_name = env.os()
let arch = env.arch()
let home = env.home_dir() ?? "(home unavailable)"
print("OS: {os_name}")
print("ARCH: {arch}")
print("HOME: {home}")
// expected (Windows x64):
// OS: windows
// ARCH: x64
// HOME: C:\Users\<...>
// Pattern: a different command per OS.
fn list_cmd() -> str {
if env.os() == "windows" {
return "dir"
}
return "ls"
}
print("listing command on this platform: {list_cmd()}")
Desafío
Combina env.os() y env.arch() para construir un identificador de plataforma
del tipo "linux-arm64" e imprimir un mensaje diferente para cada combinación.
Consulta también