1 | [package] |
2 | name = "ahash" |
3 | version = "0.8.7" |
4 | authors = ["Tom Kaitchuck <Tom.Kaitchuck@gmail.com>" ] |
5 | license = "MIT OR Apache-2.0" |
6 | description = "A non-cryptographic hash function using AES-NI for high performance" |
7 | documentation = "https://docs.rs/ahash" |
8 | repository = "https://github.com/tkaitchuck/ahash" |
9 | keywords = ["hash" , "hasher" , "hashmap" , "aes" , "no-std" ] |
10 | categories = ["algorithms" , "data-structures" , "no-std" ] |
11 | edition = "2018" |
12 | readme = "README.md" |
13 | build = "./build.rs" |
14 | exclude = ["/smhasher" , "/benchmark_tools" ] |
15 | rust-version = "1.60.0" |
16 | |
17 | [lib] |
18 | name = "ahash" |
19 | path = "src/lib.rs" |
20 | test = true |
21 | doctest = true |
22 | bench = true |
23 | doc = true |
24 | |
25 | [features] |
26 | default = ["std" , "runtime-rng" ] |
27 | |
28 | # Enabling this will enable `AHashMap` and `AHashSet`. |
29 | std = [] |
30 | |
31 | # Runtime random key generation using getrandom. |
32 | runtime-rng = ["getrandom" ] |
33 | |
34 | # This is an alternative to runtime key generation which does compile time key generation if runtime-rng is not available. |
35 | # (If runtime-rng is enabled this does nothing.) |
36 | # If this is on (and runtime-rng is off) it implies the produced binary will not be identical. |
37 | # If this is disabled and runtime-rng is unavailable constant keys are used. |
38 | compile-time-rng = ["const-random" ] |
39 | |
40 | # Do not use any random number generator (either at compile time or runtime) |
41 | # If either runtime-rng or compile-time-rng are enabled this does nothing. |
42 | no-rng = [] |
43 | |
44 | # in case this is being used on an architecture lacking core::sync::atomic::AtomicUsize and friends |
45 | atomic-polyfill = [ "dep:atomic-polyfill" , "once_cell/atomic-polyfill" ] |
46 | |
47 | # Nightly-only support for AES intrinsics on 32-bit ARM |
48 | nightly-arm-aes = [] |
49 | |
50 | [[bench]] |
51 | name = "ahash" |
52 | path = "tests/bench.rs" |
53 | harness = false |
54 | |
55 | [[bench]] |
56 | name = "map" |
57 | path = "tests/map_tests.rs" |
58 | harness = false |
59 | |
60 | [profile.test] |
61 | opt-level = 2 |
62 | lto = 'fat' |
63 | |
64 | [profile.release] |
65 | opt-level = 3 |
66 | debug = false |
67 | lto = 'fat' |
68 | debug-assertions = false |
69 | codegen-units = 1 |
70 | |
71 | [profile.bench] |
72 | opt-level = 3 |
73 | debug = false |
74 | lto = 'fat' |
75 | debug-assertions = false |
76 | codegen-units = 1 |
77 | |
78 | [build-dependencies] |
79 | version_check = "0.9.4" |
80 | |
81 | [dependencies] |
82 | const-random = { version = "0.1.17" , optional = true } |
83 | serde = { version = "1.0.117" , optional = true } |
84 | cfg-if = "1.0" |
85 | atomic-polyfill = { version="1.0.1" , optional=true} |
86 | getrandom = { version = "0.2.7" , optional = true } |
87 | zerocopy = { version = "0.7.31" , default-features = false, features = ["simd" ] } |
88 | |
89 | [target.'cfg(not(all(target_arch = "arm", target_os = "none")))'.dependencies] |
90 | once_cell = { version = "1.18.0" , default-features = false, features = ["alloc" ] } |
91 | |
92 | [dev-dependencies] |
93 | no-panic = "0.1.10" |
94 | criterion = {version = "0.3.2" , features = ["html_reports" ] } |
95 | seahash = "4.0" |
96 | fnv = "1.0.5" |
97 | fxhash = "0.2.1" |
98 | hex = "0.4.2" |
99 | rand = "0.8.5" |
100 | serde_json = "1.0.59" |
101 | hashbrown = "0.12.3" |
102 | |
103 | [package.metadata.docs.rs] |
104 | rustc-args = ["-C" , "target-feature=+aes" ] |
105 | rustdoc-args = ["-C" , "target-feature=+aes" ] |
106 | features = ["std" ] |
107 | |