41 lines
1.1 KiB
EmacsLisp
41 lines
1.1 KiB
EmacsLisp
// types.el — Type definitions and pattern matching.
|
|
//
|
|
// Demonstrates:
|
|
// - type (struct) definitions
|
|
// - enum definitions with payloads
|
|
// - match expressions with enum patterns
|
|
|
|
// A user-defined struct type.
|
|
// Every field is typed; the type name maps to an Engram graph node.
|
|
type User {
|
|
id: Uuid
|
|
name: String
|
|
email: String
|
|
}
|
|
|
|
// An enum with a payload variant.
|
|
enum Status {
|
|
Active
|
|
Inactive
|
|
Pending(String)
|
|
}
|
|
|
|
// A function that takes a Status and returns a human-readable string.
|
|
fn describe_status(s: Status) -> String {
|
|
return match s {
|
|
Status::Active => "user is active"
|
|
Status::Inactive => "user is inactive"
|
|
Status::Pending(reason) => "pending: " + reason
|
|
}
|
|
}
|
|
|
|
// Sealed blocks protect sensitive values even in debug builds.
|
|
// The runtime enforces that values in sealed blocks are never
|
|
// observable through a debugger or memory dump.
|
|
sealed {
|
|
let api_key: String = "sk-prod-12345"
|
|
}
|
|
|
|
let status: Status = Status::Pending("email not verified")
|
|
let description: String = describe_status(status)
|