-
Notifications
You must be signed in to change notification settings - Fork 563
Lifetime elision #187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lifetime elision #187
Conversation
| Mutable statics have the same restrictions as normal statics, except that the | ||
| type does not have to implement the `Sync` trait. | ||
|
|
||
| ## `'static` lifetime elision |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how, but it'd be nice for this page to say it's possible and link to the rules for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is at least a mention of this on the constant items page with a link.
bf6c2c3 to
d19507a
Compare
aturon
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So sorry for the very late review! This looks great-- just a couple nits.
src/lifetime-elision.md
Outdated
| _default object lifetime bound_. These were defined in [RFC 599] and amended in | ||
| [RFC 1156]. | ||
|
|
||
| If the trait object is used as for a type argument of a generic type then the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"used as for a type"
src/lifetime-elision.md
Outdated
| * If there is more than one bound from the containing type then an explicit | ||
| bound must be specified | ||
|
|
||
| Then the bounds on the trait are used: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The text doesn't make clear the relationship between these bullets and the previous ones.
d19507a to
27d9924
Compare
|
changes made |
src/lifetime-elision.md
Outdated
| In order to make common patterns more ergonomic, Rust allows lifetimes to be | ||
| *elided* in [function item], [function pointer] and [closure trait] signatures. | ||
| The following rules are used to infer lifetime parameters for elided lifetimes. | ||
| It is an error to elide lifetime parameters that cannot be infered. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
inferred
src/lifetime-elision.md
Outdated
| type FunTrait = for<'a> Fn(&'a str) -> &'a str; // expanded | ||
| ``` | ||
|
|
||
| ## Defaults trait object lifetimes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default
* Don't talk about a future feature * Add examples of elision in function pointers/traits * A rule for 'static bounds on trait objects * Static lifetime elision doesn't happen in function pointers/traits
27d9924 to
1014b0d
Compare
|
Thanks, fixed now. |
|
cc @alercah |
|
I don't see anything that looks off to me, but I also don't have the time for a detailed read. |
Second PR to add documentation for lifetimes (next will probably moving the relevant parts of the NLL RFC text into the reference when it gets stabilised).
This is mostly existing documentation from the nomicon/reference. Significant changes from that documentation:
implheaders)'staticis the preferred bound in trait objects with multiple bounds:const RESOLVED_STATIC: &Fn(&Foo, &Bar) -> &Bazis invalid, not inferred with'staticlifetimes. (This matches: http://rust-lang.github.io/rfcs/1623-static.html, so I'm guessing that it's just a docs issue)cc #9 (rust-lang/rfcs#141)