rust/library/std
Yuki Okushi 00b3450bbc
Rollup merge of #76979 - fusion-engineering-forks:windows-fallback-check, r=dtolnay
Improve std::sys::windows::compat

Improves the compat_fn macro in sys::windows, which is used for conditionally loading APIs that might not be available.

- The module (dll) name can now be any string, not just an ident. (Not all Windows api modules are valid Rust identifiers. E.g. `WaitOnAddress` comes from `API-MS-Win-Core-Synch-l1-2-0.dll`.)
- Adds `FuncName::is_available()` for checking if a function is really available without having to do a duplicate lookup.
- Add comment explaining the lack of locking.
- Use `$_:block` to simplify the macro_rules.
- Apply `allow(unused_variables)` only to the fallback instead of everything.

---

The second point (`is_available()`) simplifies code that needs to pick an implementation depening on what is available, like `sys/windows/mutex.rs`. Before this change, it'd do its own lookup and keep its own `AtomicUsize` to track the result. Now it can just use `c::AcquireSRWLockExclusive::is_available()` directly.

This will also be useful when park/unpark/CondVar/etc. get improved implementations (e.g. from parking_lot or something else), as the best APIs for those are not available before Windows 8.
2020-10-02 08:25:11 +09:00
..
benches mv std libs to library/ 2020-07-27 19:51:13 -05:00
src Rollup merge of #76979 - fusion-engineering-forks:windows-fallback-check, r=dtolnay 2020-10-02 08:25:11 +09:00
tests mv std libs to library/ 2020-07-27 19:51:13 -05:00
build.rs Remove duplicated library links between std and libc 2020-09-21 01:37:15 -07:00
Cargo.toml libary: Forward compiler-builtins "mem" feature 2020-09-27 20:31:06 -07:00