1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//! Rust bindings to librandomx, a library for computing RandomX hashes.
//!
//! # Examples
//!
//! ## Light mode hash
//!
//! Requires 256M of shared memory.
//!
//! ```no_run
//! use randomx4r::{RandomxCache, RandomxError, RandomxFlags, RandomxVm};
//!
//! // Get flags supported by this system.
//! let flags = RandomxFlags::default();
//! let cache = RandomxCache::new(flags, b"key")?;
//! let vm = RandomxVm::new(flags, &cache)?;
//! let hash = vm.hash(b"input"); // is a [u8; 32]
//! # Ok::<(), RandomxError>(())
//! ```
//!
//! ## Fast mode hash
//!
//! Requires 2080M of shared memory.
//!
//! ```no_run
//! use randomx4r::{RandomxDataset, RandomxError, RandomxFlags, RandomxVm};
//!
//! // OR the default flags with FULLMEM (aka. fast mode)
//! let flags = RandomxFlags::default() | RandomxFlags::FULLMEM;
//! // Speed up dataset initialisation
//! const THREADS: u8 = 4;
//! let dataset = RandomxDataset::new(flags, b"key", THREADS)?;
//! let vm = RandomxVm::new_fast(flags, &dataset)?;
//! let hash = vm.hash(b"input");
//! # Ok::<(), RandomxError>(())
//! ```
//!
//! # Errors
//!
//! Some operations (e.g. allocating a VM or dataset) can fail if the
//! system doesn't have enough free memory, or if you tried to force a
//! feature like large pages or AVX2 on a system that does not support
//! it.
extern crate bitflags;
extern crate randomx4r_sys;
pub use crate*;
pub use crate*;
pub use crate*;
pub use crate*;
pub use crate*;