diff options
| author | bors <bors@rust-lang.org> | 2023-09-26 21:32:44 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-09-26 21:32:44 +0000 |
| commit | 5ae769f06bbe2afc50cde219757a5915e61ba365 (patch) | |
| tree | 240c5a7066284368fa3242e7896e128fe76a300d /compiler/rustc_error_codes/src | |
| parent | 5899a80ae60ec0959dcd4a7eca6eb02ce2866632 (diff) | |
| parent | 3c52a3e280a5fd1e8e4b48a5ec349aa00dcd859c (diff) | |
| download | rust-5ae769f06bbe2afc50cde219757a5915e61ba365.tar.gz rust-5ae769f06bbe2afc50cde219757a5915e61ba365.zip | |
Auto merge of #116144 - lcnr:subst-less, r=oli-obk
subst -> instantiate continues #110793, there are still quite a few uses of `subst` and `substitute`, but changing them all in the same PR was a bit too much, so I've stopped here for now.
Diffstat (limited to 'compiler/rustc_error_codes/src')
| -rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0038.md | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0038.md b/compiler/rustc_error_codes/src/error_codes/E0038.md index 584b78554ef..8f8eabb1519 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0038.md +++ b/compiler/rustc_error_codes/src/error_codes/E0038.md @@ -162,14 +162,13 @@ fn foo<T>(x: T) { ``` The machine code for `foo::<u8>()`, `foo::<bool>()`, `foo::<String>()`, or any -other type substitution is different. Hence the compiler generates the +other instantiation is different. Hence the compiler generates the implementation on-demand. If you call `foo()` with a `bool` parameter, the compiler will only generate code for `foo::<bool>()`. When we have additional type parameters, the number of monomorphized implementations the compiler generates does not grow drastically, since the compiler will only generate an -implementation if the function is called with unparameterized substitutions -(i.e., substitutions where none of the substituted types are themselves -parameterized). +implementation if the function is called with fully concrete arguments +(i.e., arguments which do not contain any generic parameters). However, with trait objects we have to make a table containing _every_ object that implements the trait. Now, if it has type parameters, we need to add |
