1#![warn(rust_2018_idioms)]
18#![warn(rust_2021_compatibility)]
19#![deny(
20 dead_code,
21 nonstandard_style,
22 unused_imports,
23 unused_mut,
24 unused_variables,
25 unused_unsafe,
26 unreachable_patterns
27)]
28
29pub mod bindings;
30pub mod cache;
31pub mod dataset;
32pub mod errors;
33pub mod flags;
34pub mod result_hash;
35#[cfg(test)]
36mod tests;
37pub mod vm;
38
39pub type RResult<T> = Result<T, errors::RandomXError>;
40
41pub use cache::Cache;
42pub use dataset::Dataset;
43pub use dataset::DATASET_ITEM_SIZE;
44pub use errors::RandomXError;
45pub use errors::VmCreationError;
46pub use flags::RandomXFlags;
47pub use result_hash::ResultHash;
48pub use vm::RandomXVM;
49
50macro_rules! try_alloc {
51 ($alloc:expr, $error:expr) => {{
52 let result = unsafe { $alloc };
53 if result.is_null() {
54 return Err($error)?;
55 }
56
57 result
58 }};
59}
60
61pub(crate) use try_alloc;