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

Allow closure to unsafe fn coercion #59580

merged 1 commit into from Mar 31, 2019


None yet
5 participants
Copy link

commented Mar 31, 2019

Closes #57883


This comment has been minimized.

Copy link

commented Mar 31, 2019

r? @oli-obk

(rust_highfive has picked a reviewer for you, use r? to override)

Copy link

left a comment


Show resolved Hide resolved src/librustc/ty/
Show resolved Hide resolved src/librustc/mir/
Show resolved Hide resolved src/librustc_typeck/check/
Show resolved Hide resolved src/test/run-pass/

@Centril Centril added this to the 1.35 milestone Mar 31, 2019

@taiki-e taiki-e force-pushed the taiki-e:coerce-closure branch from be0a788 to 07021e0 Mar 31, 2019


This comment has been minimized.

Copy link

commented Mar 31, 2019

Impl lgtm. Issue suggests that this doesn't need an FCP.

@bors r+

I opened an issue (#59588) talking about my unhappiness with the fact that this PR had to touch three enums. Note that this is absolutely not this PR's fault, but just the way our datastructes are laid out.


This comment has been minimized.

Copy link

commented Mar 31, 2019

📌 Commit 07021e0 has been approved by oli-obk

Centril added a commit to Centril/rust that referenced this pull request Mar 31, 2019

bors added a commit that referenced this pull request Mar 31, 2019

Auto merge of #59590 - Centril:rollup, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #58805 (Lint for redundant imports)
 - #59506 (Use platform dependent mcount function)
 - #59519 (rustc_target: factor out common fields of non-Single Variants.)
 - #59580 (Allow closure to unsafe fn coercion)
 - #59581 (Stabilize refcell_replace_swap feature)
 - #59583 (match match match match match)
 - #59587 (Remove #[doc(hidden)] from Error::type_id)

Failed merges:

r? @ghost

@bors bors merged commit 07021e0 into rust-lang:master Mar 31, 2019

1 check passed

Travis CI - Pull Request Build Passed

@taiki-e taiki-e deleted the taiki-e:coerce-closure branch Mar 31, 2019

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 31, 2019

rust: Update to 1.35.0.
Version 1.35.0 (2019-05-23)

- [`FnOnce`, `FnMut`, and the `Fn` traits are now implemented for `Box<FnOnce>`,
  `Box<FnMut>`, and `Box<Fn>` respectively.][59500]
- [You can now coerce closures into unsafe function pointers.][59580] e.g.
  unsafe fn call_unsafe(func: unsafe fn()) {

  pub fn main() {
      unsafe { call_unsafe(|| {}); }

- [Added the `armv6-unknown-freebsd-gnueabihf` and
  `armv7-unknown-freebsd-gnueabihf` targets.][58080]
- [Added the `wasm32-unknown-wasi` target.][59464]

- [`Thread` will now show its ID in `Debug` output.][59460]
- [`StdinLock`, `StdoutLock`, and `StderrLock` now implement `AsRawFd`.][59512]
- [`alloc::System` now implements `Default`.][59451]
- [Expanded `Debug` output (`{:#?}`) for structs now has a trailing comma on the
  last field.][59076]
- [`char::{ToLowercase, ToUppercase}` now
  implement `ExactSizeIterator`.][58778]
- [All `NonZero` numeric types now implement `FromStr`.][58717]
- [Removed the `Read` trait bounds
  on the `BufReader::{get_ref, get_mut, into_inner}` methods.][58423]
- [You can now call the `dbg!` macro without any parameters to print the file
  and line where it is called.][57847]
- [In place ASCII case conversions are now up to 4× faster.][59283]
  e.g. `str::make_ascii_lowercase`
- [`hash_map::{OccupiedEntry, VacantEntry}` now implement `Sync`
  and `Send`.][58369]

Stabilized APIs
- [`f32::copysign`]
- [`f64::copysign`]
- [`RefCell::replace_with`]
- [`RefCell::map_split`]
- [`ptr::hash`]
- [`Range::contains`]
- [`RangeFrom::contains`]
- [`RangeTo::contains`]
- [`RangeInclusive::contains`]
- [`RangeToInclusive::contains`]
- [`Option::copied`]

- [You can now set `cargo:rustc-cdylib-link-arg` at build time to pass custom
  linker arguments when building a `cdylib`.][cargo/6298] Its usage is highly
  platform specific.

- [The Rust toolchain is now available natively for musl based distros.][58575]

[59460]: rust-lang/rust#59460
[59464]: rust-lang/rust#59464
[59500]: rust-lang/rust#59500
[59512]: rust-lang/rust#59512
[59580]: rust-lang/rust#59580
[59283]: rust-lang/rust#59283
[59451]: rust-lang/rust#59451
[59076]: rust-lang/rust#59076
[58778]: rust-lang/rust#58778
[58717]: rust-lang/rust#58717
[58369]: rust-lang/rust#58369
[58423]: rust-lang/rust#58423
[58080]: rust-lang/rust#58080
[57847]: rust-lang/rust#57847
[58575]: rust-lang/rust#58575
[cargo/6298]: rust-lang/cargo#6298
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.