liveBook · Manning

Monomorphization

As explained in Write Powerful Rust Macros

Monomorphization is the compilation transformation that creates concrete specialized copies of a generic function for the types with which it is instantiated.

Monomorphization is Rust’s compilation transformation for generic functions: each concrete type used at a call site receives its own specialized function copy. section 5.3

Specializing one generic function

A generic `foo<T>(t: T) -> T` called with `i32` and `u8` becomes two concrete versions: one accepting and returning `i32`, and one accepting and returning `u8`. section 5.3

How Write Powerful Rust Macros covers it

How deep it goes
Defines the transformation and its performance trade-offs, but does not descend into compiler implementation internals.
Examples
Uses `foo<T>` calls with `i32` and `u8`, plus a generic `compose_two` function generated by a procedural macro.
What it assumes
Assumes familiarity with Rust generics, function calls, concrete types, and procedural-macro-generated code.
What you can do after
Evaluate how generic calls may improve speed while increasing binary size, especially across many concrete types.
How it connects
Connects generic functions with procedural macros, code generation, execution speed, and binary size.

Also explained in

Compare how 2 books explain monomorphization →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Write Powerful Rust Macros. The section links point to the parts of the book it draws on.