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

Rollup of 15 pull requests #78279

Closed
wants to merge 19 commits into from
Closed

Rollup of 15 pull requests #78279

wants to merge 19 commits into from

Commits on Oct 7, 2020

  1. Revert "Allow dynamic linking for iOS/tvOS targets."

    This reverts commit 56e115a.
    francesca64 committed Oct 7, 2020
    Configuration menu
    Copy the full SHA
    16e10bf View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2020

  1. Configuration menu
    Copy the full SHA
    a9470d0 View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2020

  1. improve const infer error

    lcnr committed Oct 22, 2020
    Configuration menu
    Copy the full SHA
    40ab18d View commit details
    Browse the repository at this point in the history

Commits on Oct 23, 2020

  1. Configuration menu
    Copy the full SHA
    09135e4 View commit details
    Browse the repository at this point in the history
  2. review

    lcnr committed Oct 23, 2020
    Configuration menu
    Copy the full SHA
    e1c524c View commit details
    Browse the repository at this point in the history
  3. add insert and insert_with to Option

    This removes a cause of `unwrap` and code complexity.
    
    This allows replacing
    
    ```
    option_value = Some(build());
    option_value.as_mut().unwrap()
    ```
    
    with
    
    ```
    option_value.insert(build())
    ```
    
    or
    
    ```
    option_value.insert_with(build)
    ```
    
    It's also useful in contexts not requiring the mutability of the reference.
    
    Here's a typical cache example:
    
    ```
    let checked_cache = cache.as_ref().filter(|e| e.is_valid());
    let content = match checked_cache {
    	Some(e) => &e.content,
    	None => {
    	    cache = Some(compute_cache_entry());
    	    // unwrap is OK because we just filled the option
    	    &cache.as_ref().unwrap().content
    	}
    };
    ```
    
    It can be changed into
    
    ```
    let checked_cache = cache.as_ref().filter(|e| e.is_valid());
    let content = match checked_cache {
    	Some(e) => &e.content,
    	None => &cache.insert_with(compute_cache_entry).content,
    };
    ```
    Canop committed Oct 23, 2020
    Configuration menu
    Copy the full SHA
    9b90e17 View commit details
    Browse the repository at this point in the history
  4. remove option.insert_with

    `option.insert` covers both needs anyway, `insert_with` is
    redundant.
    Canop committed Oct 23, 2020
    Configuration menu
    Copy the full SHA
    e8df2a4 View commit details
    Browse the repository at this point in the history
  5. more tests in option.insert, code cleaning in option

    Code cleaning made according to suggestions in discussion
    on PR ##77392 impacts insert, get_or_insert and get_or_insert_with.
    Canop committed Oct 23, 2020
    Configuration menu
    Copy the full SHA
    60a96ca View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    cc8b77a View commit details
    Browse the repository at this point in the history
  7. Update library/core/src/option.rs

    Co-authored-by: Mara Bos <[email protected]>
    Canop and m-ou-se committed Oct 23, 2020
    Configuration menu
    Copy the full SHA
    3955779 View commit details
    Browse the repository at this point in the history
  8. Update library/core/src/option.rs

    Co-authored-by: Ivan Tham <[email protected]>
    Canop and pickfire committed Oct 23, 2020
    Configuration menu
    Copy the full SHA
    415a8e5 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    216d0fe View commit details
    Browse the repository at this point in the history
  10. Update description of Empty Enum for accuracy

    An empty enum is similar to the never type `!`, rather than the unit type `()`.
    Enet4 authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    efedcb2 View commit details
    Browse the repository at this point in the history
  11. Rollup merge of #77392 - Canop:option_insert, r=m-ou-se

    add `insert` to `Option`
    
    This removes a cause of `unwrap` and code complexity.
    
    This allows replacing
    
    ```
    option_value = Some(build());
    option_value.as_mut().unwrap()
    ```
    
    with
    
    ```
    option_value.insert(build())
    ```
    
    It's also useful in contexts not requiring the mutability of the reference.
    
    Here's a typical cache example:
    
    ```
    let checked_cache = cache.as_ref().filter(|e| e.is_valid());
    let content = match checked_cache {
    	Some(e) => &e.content,
    	None => {
    	    cache = Some(compute_cache_entry());
    	    // unwrap is OK because we just filled the option
    	    &cache.as_ref().unwrap().content
    	}
    };
    ```
    
    It can be changed into
    
    ```
    let checked_cache = cache.as_ref().filter(|e| e.is_valid());
    let content = match checked_cache {
    	Some(e) => &e.content,
    	None => &cache.insert(compute_cache_entry()).content,
    };
    ```
    
    *(edited: I removed `insert_with`)*
    jonas-schievink authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    4fac27a View commit details
    Browse the repository at this point in the history
  12. Rollup merge of #77716 - francesca64:revert-ios-dynamic-linking, r=jo…

    …nas-schievink
    
    Revert "Allow dynamic linking for iOS/tvOS targets."
    
    This reverts PR #73516.
    
    On macOS I compile static libs for iOS, automated using [cargo-mobile](https://github.com/BrainiumLLC/cargo-mobile), which has worked smoothly for the past 2 years. However, upon updating to Rust 1.46.0, I was no longer able to use Rust on iOS. I've bisected this to the PR referenced above.
    
    For most projects tested, apps now immediately crash with a message like this:
    ```
    dyld: Library not loaded: /Users/francesca/Projects/example/target/aarch64-apple-ios/debug/deps/libexample.dylib
      Referenced from: /private/var/containers/Bundle/Application/745912AF-A928-465C-B340-872BD1C9F368/example.app/example
      Reason: image not found
    dyld: launch, loading dependent libraries
    DYLD_LIBRARY_PATH=/usr/lib/system/introspection
    DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/Developer/Library/PrivateFrameworks/GPUTools.framework/libglInterpose.dylib:/usr/lib/libMTLCapture.dylib
    ```
    
    This can be reproduced by using cargo-mobile to generate a winit example project, and then attempting to run it on an iOS device (`cargo mobile init && cargo apple open`).
    
    In our projects that depend on DisplayLink, the build instead fails with a linker error:
    ```
    = note: Undefined symbols for architecture arm64:
                "_CACurrentMediaTime", referenced from:
                    display_link::ios::run_callback_ios10::hda81197ff46aedbd in libapp-4f0abc1d7684103f.rlib(app-4f0abc1d7684103f.40d4iro0yz1iy487.rcgu.o)
                    display_link::ios::run_callback_pre_ios10::h91f085da19374320 in libapp-4f0abc1d7684103f.rlib(app-4f0abc1d7684103f.40d4iro0yz1iy487.rcgu.o)
              ld: symbol(s) not found for architecture arm64
    ```
    
    After reverting the change to enable dynamic linking on iOS, everything works the same as it did on Rust 1.45.2 for me.
    
    In the future, would it be possible for me to be pinged when iOS-related PRs are made? I work for a company that intends on using Rust on iOS in production, so I'd gladly provide testing.
    
    cc @aspenluxxxy
    jonas-schievink authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    b0ab433 View commit details
    Browse the repository at this point in the history
  13. Rollup merge of #78198 - tmiasko:assert, r=davidtwco

    Simplify assert terminator only if condition evaluates to expected value
    jonas-schievink authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    e6f7b6b View commit details
    Browse the repository at this point in the history
  14. Rollup merge of #78249 - lcnr:ct-infer-origin, r=varkor

    improve const infer error
    
    For type inference we probably have to be careful about subtyping and stuff but considering that subtyping shouldn't be relevant for constants I don't really see a reason why we may not want to reuse the const origin here.
    
    r? @varkor
    jonas-schievink authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    71f1f76 View commit details
    Browse the repository at this point in the history
  15. Rollup merge of #78264 - JohnTitor:macro-test, r=petrochenkov

    Add regression test for issue-77475
    
    Closes #77475
    jonas-schievink authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    8c5d914 View commit details
    Browse the repository at this point in the history
  16. Rollup merge of #78274 - Enet4:patch-1, r=jonas-schievink

    Update description of Empty Enum for accuracy
    
    An empty enum is similar to the never type `!`, rather than the unit type `()`.
    jonas-schievink authored Oct 23, 2020
    Configuration menu
    Copy the full SHA
    84437b4 View commit details
    Browse the repository at this point in the history