o1_utils/
lib.rs

1//! A collection of utility functions and constants that can be reused from
2//! multiple projects
3
4// Enable unstable `is_multiple_of` on nightly for Wasm builds until nightly is updated
5// See: https://github.com/o1-labs/mina-rust/issues/1997
6#![cfg_attr(target_arch = "wasm32", feature(unsigned_is_multiple_of))]
7
8pub mod adjacent_pairs;
9pub mod biguint_helpers;
10pub mod bitwise_operations;
11pub mod chunked_evaluations;
12pub mod chunked_polynomial;
13pub mod dense_polynomial;
14pub mod evaluations;
15pub mod field_helpers;
16pub mod foreign_field;
17pub mod hasher;
18pub mod lazy_cache;
19pub mod math;
20pub mod serialization;
21
22pub use biguint_helpers::BigUintHelpers;
23pub use bitwise_operations::BitwiseOps;
24pub use chunked_evaluations::ChunkedEvaluations;
25pub use dense_polynomial::ExtendedDensePolynomial;
26pub use evaluations::ExtendedEvaluations;
27pub use field_helpers::{BigUintFieldHelpers, FieldHelpers, RandomField, Two};
28pub use foreign_field::ForeignElement;
29
30/// Utils only for testing
31pub mod tests {
32    use rand::{rngs::StdRng, thread_rng, Rng, SeedableRng};
33
34    /// Create a new test rng with a random seed
35    pub fn make_test_rng(seed: Option<[u8; 32]>) -> StdRng {
36        let seed = seed.unwrap_or(thread_rng().gen());
37        eprintln!("Seed: {:?}", seed);
38        StdRng::from_seed(seed)
39    }
40}