diff options
| author | kennytm <kennytm@gmail.com> | 2018-07-14 02:56:52 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-14 02:56:52 +0800 |
| commit | 591accf7b25847164f53b60fc02431ec536a61f2 (patch) | |
| tree | 86d3519925a5e16d176d053b6bd534cf5a5d1307 /src/rustllvm/RustWrapper.cpp | |
| parent | 2fa00da26f37a13398b03e51f1f98c778076a274 (diff) | |
| parent | 4f4e91a69d75b5de66d53399027cc1835387a423 (diff) | |
| download | rust-591accf7b25847164f53b60fc02431ec536a61f2.tar.gz rust-591accf7b25847164f53b60fc02431ec536a61f2.zip | |
Rollup merge of #52316 - seanmonstar:waker-unsafety, r=cramertj
task: remove wrong comments about non-existent LocalWake trait ~~A `LocalWaker` is specifically `!Send `, and the unsafety comment around `LocalWaker::new` only specifies that it be safe to call `wake_local`. One could then accidentally promote a `LocalWaker` into a `Waker`, which is universally `Send`, simply via `Waker::from(local_waker)`. A `LocalWaker` the was built expecting to not be `Send`, such as using `Rc`, could be sent to other threads safely.~~ ~~Separately, though somewhat related, `Context` holds a `&LocalWaker` internally, and exposes a `waker() -> &Waker` method. This simply transmutes the `&LocalWaker` to `&Waker`, which would be unsound, except that you can't "send" a `&Waker`, you'd need to clone it first. Since `UnsafeWake::clone_raw` requires that it return a `Waker`, the transmute is not unsound. The transmuted `LocalWaker` will be promoted to a `Waker` correctly.~~ ~~That would mean that if `UnsafeWake::clone_raw` were to be changed, such as returning `Self` instead of `Waker`, this would no longer be sound. Thus, this also adds a comment to `clone_raw` to remember this.~~ r? @cramertj
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
