LogoMist

Variables

Local state management with type inference and explicit mutability.

Variables in Mist are declared with the let keyword. Like Rust, variables are immutable by default, and types are written after the name for scannability.

Basic Declaration

Variables use let for automatic type inference. The type annotation is optional — when omitted, the compiler infers the type from the value.

let x = 42;
let greeting = "Hello Mist";

Mutability

To allow a variable to be reassigned, use let mut:

let mut score = 0;
score = 100;

Explicit Typing

Type annotations are placed after the name:

let id u64 = 1000234;
let is_active bool = true;
let name *str = "mist";

Arrays

let list = [1, 2, 3];       // Standard init
let zeros = [0; 10];         // Repeat notation: ten zeroes

Pattern Destructuring

Tuples are destructured using square brackets:

let [a, b] = (10, "hello");
let [a, [b, c]] = (1, (2, 3));

Key Characteristics

  • Predictable Order: The let keyword signals a binding, followed by the name, optional type, and optional value.
  • Safety First: Immutability by default prevents accidental state changes.
  • Zero-Cost Inference: Type inference is handled entirely at compile time.
  • Shadowing: Mist supports variable shadowing within the same scope.

On this page