Skip to content
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

Some constant/static updates. #867

Merged
merged 2 commits into from
Aug 19, 2020
Merged

Some constant/static updates. #867

merged 2 commits into from
Aug 19, 2020

Conversation

ehuss
Copy link
Contributor

@ehuss ehuss commented Aug 3, 2020

@ehuss
Copy link
Contributor Author

ehuss commented Aug 3, 2020

@oli-obk Do you think you'd be able to review this?

@@ -53,7 +54,7 @@ to be run.
A _const context_ is one of the following:

* [Array type length expressions]
* Repeat expression length expressions
* [Array repeat expressions][array expressions]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Specifically only the length field of the repeat expression

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, sorry! I probably shouldn't open PRs late at night.

@@ -76,6 +77,10 @@ Notable features that const contexts have, but const fn haven't are:
* union field access
* [`transmute`] invocations.

Conversely, the following are possible in a const function, but not in a const context:

* Use of generic parameters.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's not possible in const fn yet either.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, maybe I'm a bit confused. The following seems to work for me:

const fn cfunc<T>(x: &T) -> usize {
    std::mem::size_of::<T>()
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, well, yes. I was thinking of trait bounds on generic parameters.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the restriction on trait bounds is already mentioned above. Let me know if you think this should be worded any differently.

guaranteed to refer to the same memory address.
context when used. This includes usage of constants from external crates.
References to the same constant are not necessarily guaranteed to refer to the
same memory address.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also mention that this holds for !Copy types. So you can have a const FOO: String = String::new() and copy that around as many times as you want.

@ehuss
Copy link
Contributor Author

ehuss commented Aug 18, 2020

@Havvy can you approve this?

@Havvy Havvy merged commit 1b6c4b0 into rust-lang:master Aug 19, 2020
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 20, 2020
Update books

## nomicon

2 commits in bfe1ab96d717d1dda50e499b360f2e2f57e1750a..25854752549d44d76fbd7650e17cb4f167a0b8fb
2020-06-05 13:19:42 -0400 to 2020-08-19 16:41:48 -0400
- Follow-up of rust-lang#75152 (rust-lang/nomicon#235)
- Follow-up for rust-lang#74850 (rust-lang/nomicon#233)

## reference

7 commits in c9b2736a059469043177e1e4ed41a55d7c63ac28..1b6c4b0afab97c0230433466c97167bbbe8445f6
2020-08-03 03:34:03 -0700 to 2020-08-18 17:04:28 -0700
- Some constant/static updates. (rust-lang/reference#867)
- Add casting rules from function items to other types (rust-lang/reference#878)
- Apply joshtriplett's suggestion
- Add note clarifying 16-bit support.
- Document min pointer width.
- Update to `dyn Trait` syntax in a couple places (rust-lang/reference#875)
- mention that `#[track_caller]` on `fn main` is forbidden (rust-lang/reference#872)

## book

2 commits in 363293c1c5ce9e84ea3935a5e29ce8624801208a..c0a6a61b8205da14ac955425f74258ffd8ee065d
2020-08-03 15:56:30 -0500 to 2020-08-14 14:21:49 -0500
- Correct listing 11-10: Take tests module out of main function. (rust-lang/book#2427)
- Update link to russian translation (rust-lang/book#2423)

## rust-by-example

5 commits in 2e9271981adc32613365810f3428334c07095215..80a10e22140e28392b99d24ed02f4c6d8cb770a0
2020-07-27 13:39:16 -0500 to 2020-08-08 09:56:46 -0300
- Add tuple `..` operator example (rust-lang/rust-by-example#1368)
- Clarify wording (rust-lang/rust-by-example#1366)
- Include arc (rust-lang/rust-by-example#1365)
- Modify supertraits sample code (rust-lang/rust-by-example#1361)
- Remove mention of `try!` in `Display` example (rust-lang/rust-by-example#1357)

## embedded-book

3 commits in b5256448a2a4c1bec68b93c0847066f92f2ff5a9..0cd2ca116274b915924c3a7e07c1e046b6f19b77
2020-07-24 23:09:29 +0000 to 2020-08-19 10:33:15 +0000
- Ignore unused argument in closure  (rust-embedded/book#261)
- Fix broken sentence  (rust-embedded/book#260)
- Add additional command to try when verifying installation.  (rust-embedded/book#259)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants