Monomorphization
Generics-implementation där compiler genererar separate concrete-typed version per användning. Vec<i32> och Vec<String> är distinct compiled types. Rust, C++, Go (1.18+) använder denna approach.
Fördel: inga runtime-overhead (ej virtual-dispatch eller boxing), allt aggressive-inlined + optimerat. Nackdel: binary-size explosion ("template bloat" i C++) — varje T-användning kompileras separat. Klassisk Rust-pain: serde-derive på 100 structs → 30+ min compile. Skiljs från type erasure (Java, TS) som genererar en runtime-version. Trait objects (Rust dyn Trait) är opt-in-runtime-dispatch om binary-size räknas. Modern Rust-tooling: cargo-bloat, llvm-strip för att mäta + reducera template-bloat.