File tree 1 file changed +18
-0
lines changed
1 file changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -102,6 +102,21 @@ impl LateLintPass<'_> for MyStructLint {
102
102
}
103
103
```
104
104
105
+ ## ` hir::Ty ` and ` ty::Ty `
106
+
107
+ We've been talking about [ ` ty::Ty ` ] [ middle_ty ] this whole time without addressing [ ` hir::Ty ` ] [ hir_ty ] , but the latter
108
+ is also important to understand.
109
+
110
+ ` hir::Ty ` would represent * what* an user wrote, while ` ty::Ty ` would understand the meaning of it (because it has more
111
+ information).
112
+
113
+ ** Example: ` fn foo(x: u32) -> u32 { x } ` **
114
+
115
+ Here the HIR sees the types without "thinking" about them, it knows that the function takes an ` u32 ` and returns
116
+ an ` u32 ` . But at the ` ty::Ty ` level the compiler understands that they're the same type, in-depth lifetimes, etc...
117
+
118
+ you can use the [ ` hir_ty_to_ty ` ] [ hir_ty_to_ty ] function to convert from a ` hir::Ty ` to a ` ty::Ty `
119
+
105
120
## Useful Links
106
121
107
122
Below are some useful links to further explore the concepts covered
@@ -124,3 +139,6 @@ in this chapter:
124
139
[ Ty ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.Ty.html
125
140
[ TyKind ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/enum.TyKind.html
126
141
[ TypeckResults ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.TypeckResults.html
142
+ [ middle_ty ] : https://doc.rust-lang.org/beta/nightly-rustc/rustc_middle/ty/struct.Ty.html
143
+ [ hir_ty ] : https://doc.rust-lang.org/beta/nightly-rustc/rustc_hir/struct.Ty.html
144
+ [ hir_ty_to_ty ] : https://doc.rust-lang.org/beta/nightly-rustc/rustc_hir_analysis/fn.hir_ty_to_ty.html
You can’t perform that action at this time.
0 commit comments