/rust/registry/src/index.crates.io-1949cf8c6b5b557f/hashbrown-0.16.0/src/util.rs
Line | Count | Source |
1 | | // FIXME: Replace with `core::hint::{likely, unlikely}` once they are stable. |
2 | | #[cfg(feature = "nightly")] |
3 | | pub(crate) use core::intrinsics::{likely, unlikely}; |
4 | | |
5 | | #[cfg(not(feature = "nightly"))] |
6 | | #[inline(always)] |
7 | | #[cold] |
8 | 613k | fn cold_path() {} |
9 | | |
10 | | #[cfg(not(feature = "nightly"))] |
11 | | #[inline(always)] |
12 | 11.8M | pub(crate) fn likely(b: bool) -> bool { |
13 | 11.8M | if b { |
14 | 11.7M | true |
15 | | } else { |
16 | 158k | cold_path(); |
17 | 158k | false |
18 | | } |
19 | 11.8M | } |
20 | | |
21 | | #[cfg(not(feature = "nightly"))] |
22 | | #[inline(always)] |
23 | 8.14M | pub(crate) fn unlikely(b: bool) -> bool { |
24 | 8.14M | if b { |
25 | 455k | cold_path(); |
26 | 455k | true |
27 | | } else { |
28 | 7.68M | false |
29 | | } |
30 | 8.14M | } |
31 | | |
32 | | // FIXME: use strict provenance functions once they are stable. |
33 | | // Implement it with a transmute for now. |
34 | | #[inline(always)] |
35 | | #[allow(clippy::useless_transmute)] // clippy is wrong, cast and transmute are different here |
36 | 0 | pub(crate) fn invalid_mut<T>(addr: usize) -> *mut T { |
37 | 0 | unsafe { core::mem::transmute(addr) } |
38 | 0 | } |