Generics
Generic Functions
wyn
fn max<T>(a: T, b: T) -> T {
if a > b { return a }
return b
}
var bigger = max(10, 20) // 20
var larger = max(3.14, 2.71) // 3.14Generic Structs
Structs with type parameters:
wyn
struct Pair<T> {
first: T
second: T
}
var p = Pair { first: 10, second: 20 }
println(p.first.to_string()) // 10
println(p.second.to_string()) // 20
// Field access and expressions
var sum = p.first + p.second // 30Mixed generic and concrete fields:
wyn
struct Box<T> {
value: T
label: string
}
var b = Box { value: 42, label: "answer" }
println(b.label) // answerBuilt-in Generic Types
wyn
// Result<T> — success or error
fn safe_div(a: int, b: int) -> Result<int> {
if b == 0 { return Err("division by zero") }
return Ok(a / b)
}
// Option<T> — present or absent
fn find(arr: [int], target: int) -> Option<int> {
for i in 0..arr.len() {
if arr[i] == target { return Some(i) }
}
return None
}