Skip to content

Commit

Permalink
Trait bounds are discussed later
Browse files Browse the repository at this point in the history
Beside trait bounds are discussed in 10.2 not in 10.1, _monomorphization_ relates to generics in general not only those bound by/to trait.
  • Loading branch information
deep-outcome committed Oct 21, 2022
1 parent fdd1d92 commit 8a33c94
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/ch17-02-trait-objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,14 +232,14 @@ didn’t mean to pass and so should pass a different type or we should implement
Recall in the [“Performance of Code Using
Generics”][performance-of-code-using-generics]<!-- ignore --> section in
Chapter 10 our discussion on the monomorphization process performed by the
compiler when we use trait bounds on generics: the compiler generates
nongeneric implementations of functions and methods for each concrete type that
we use in place of a generic type parameter. The code that results from
monomorphization is doing *static dispatch*, which is when the compiler knows
what method you’re calling at compile time. This is opposed to *dynamic
dispatch*, which is when the compiler can’t tell at compile time which method
you’re calling. In dynamic dispatch cases, the compiler emits code that at
runtime will figure out which method to call.
compiler on generics: the compiler generates nongeneric implementations
of functions and methods for each concrete type that we use in place of
a generic type parameter. The code that results from monomorphization is
doing *static dispatch*, which is when the compiler knows what method you’re
calling at compile time. This is opposed to *dynamic dispatch*, which is
when the compiler can’t tell at compile time which method you’re calling.
In dynamic dispatch cases, the compiler emits code that at runtime will
figure out which method to call.

When we use trait objects, Rust must use dynamic dispatch. The compiler doesn’t
know all the types that might be used with the code that’s using trait objects,
Expand Down

0 comments on commit 8a33c94

Please sign in to comment.