You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rollup merge of rust-lang#152968 - khyperia:regionkind-comment, r=BoxyUwU
Flip "region lattice" in RegionKind doc comment
If we assume that references take their region covariantly, and use that to define the subtyping relationship of regions, `'empty` is ⊤ (top) and `'static` is ⊥ (bottom), and that `'a <: 'b` is defined as `'a >= 'b`. However, the RegionKind doc comment's "region lattice" had `'static` at Top. While this is perhaps technically correct (a so-called "region lattice" is not a "type lattice"), it confused me a lot, and took me half an hour to be like "no, ok, I *do* understand things correctly, this region lattice is just flipped from the subtype lattice". Seems better to just have them be the same!
I also took the opportunity to rewrite some parts of the comment with notes that would have helped me when starting out.
Bikesheds welcome (as long as they don't go on forever)!
For context: the comment "`'static` is Top" was [written in 2013](rust-lang@a896440#diff-8780054cdf09361c4ac2540c7f544ecfdc52a9e610822aabb8bcd2964affcb1cR430), before there was a [discussion in 2014](rust-lang#15699) that clarified that references take their regions covariantly, and `'a <: 'b` is defined as `'a >= 'b`.
See also Zulip thread: https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/RegionKind.20rustc.20doc.20comment
Copy file name to clipboardExpand all lines: src/doc/rustc-dev-guide/src/early-late-parameters.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,12 @@
3
3
4
4
> **NOTE**: This chapter largely talks about early/late bound as being solely relevant when discussing function item types/function definitions. This is potentially not completely true, async blocks and closures should likely be discussed somewhat in this chapter.
5
5
6
+
See also these blog posts from when the distinction between early and late bound parameters was
7
+
introduced: [Intermingled parameter lists] and [Intermingled parameter lists, take 2].
[Intermingled parameter lists, take 2]: https://smallcultfollowing.com/babysteps/blog/2013/11/04/intermingled-parameter-lists/
11
+
6
12
## What does it mean to be "early" bound or "late" bound
7
13
8
14
Every function definition has a corresponding ZST that implements the `Fn*` traits known as a [function item type][function_item_type]. This part of the chapter will talk a little bit about the "desugaring" of function item types as it is useful context for explaining the difference between early bound and late bound generic parameters.
0 commit comments