Files
bux-lang/examples/generics_struct.bux
T
dimgigov 53b43b0f79 feat: lifetime elision, tooling CI, registry, and LSP locals
Ship the QUALITY_PLAN stretch from ownership through ecosystem: C.1
lifetime elision (bootstrap + selfhost), bux fmt/test/doc CI hooks,
stdlib goldens, package registry (bux search/add), and LSP 0.4
position-sensitive locals with inferred let types. Full-tree format
pass plus Map/Set remove double-free fix.
2026-07-19 16:35:08 +03:00

52 lines
976 B
Plaintext

// Generic structs - Box<T> and Pair<T, U>
import Std::Io::{PrintLine, PrintInt};
struct Box<T> {
value: T,
}
struct Pair<T, U> {
first: T,
second: U,
}
func Box_Get<T>(self: *Box<T>) -> T {
return self.value;
}
func Box_Set<T>(self: *Box<T>, value: T) {
self.value = value;
}
func Pair_GetFirst<T, U>(self: *Pair<T, U>) -> T {
return self.first;
}
func Pair_GetSecond<T, U>(self: *Pair<T, U>) -> U {
return self.second;
}
func Main() -> int {
let b: Box<int> = Box<int> { value: 42 };
PrintLine("Box value:");
PrintInt(b.Get());
PrintLine("");
b.Set(100);
PrintLine("Box after Set(100):");
PrintInt(b.Get());
PrintLine("");
let p: Pair<int, String> = Pair<int, String> { first: 10, second: "hello" };
PrintLine("Pair first:");
PrintInt(p.GetFirst());
PrintLine("");
let bp: *Box<int> = &b;
PrintLine("Box via pointer:");
PrintInt(bp.Get());
PrintLine("");
return 0;
}