Structs
Data modeling using Mist's type-first convention.
Structs in Mist follow the same structural logic as Rust, but apply the language-wide type name declaration style and allow for comma-separated field grouping.
Basic Syntax
A struct is defined by its name followed by a block of fields. Each field follows the Mist convention of placing the type before the identifier, separated by commas.
public struct Task {
public String name,
public TaskState state,
public i32 executions,
}Visibility
Use the public modifier to make the struct or its individual fields accessible from other modules.
public struct NetworkNode {
public u32 id,
str* address,
}Instantiation
Structs are instantiated using the standard brace syntax.
var task = Task {
name: "Initialize".to_string(),
state: TaskState::Pending,
executions: 0,
};Generics & Lifetimes
Generics and lifetimes are declared in angle brackets after the struct name. Lifetimes are associated with the reference/pointer type within the field declarations.
public struct Buffer<'a, T> {
public T'a* data,
public usize len,
}Key Characteristics
- Type-First Declaration: Fields use the
type nameorder to match function parameters and variable declarations. - Comma-Separated Members: Fields are separated by commas, maintaining a clean and consistent delimiter style.
- Rust Compatibility: Maps 1:1 to Rust structs, ensuring zero-cost abstraction and full ecosystem interoperability.
- Direct Visibility: The
publickeyword replacespubfor a more consistent modifier language across the codebase.