File tree Expand file tree Collapse file tree 1 file changed +18
-0
lines changed Expand file tree Collapse file tree 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 {
102102}
103103```
104104
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+
105120## Useful Links
106121
107122Below are some useful links to further explore the concepts covered
@@ -124,3 +139,6 @@ in this chapter:
124139[ Ty ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.Ty.html
125140[ TyKind ] : https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/enum.TyKind.html
126141[ 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