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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(all(test, not(feature = "std")))]
#[macro_use]
extern crate std;
#[cfg(not(feature = "std"))]
pub use alloc::*;
#[cfg(not(feature = "std"))]
pub use core::*;
#[cfg(feature = "std")]
#[doc(hidden)]
pub use std::*;
#[rustfmt::skip]
#[cfg(not(feature = "std"))]
#[allow(unused_imports)]
#[doc(hidden)]
pub use alloc::{boxed::Box, vec::Vec};
#[rustfmt::skip]
#[cfg(feature = "std")]
#[allow(unused_imports)]
#[doc(hidden)]
pub use std::{boxed::Box, vec::Vec};
#[macro_use]
extern crate thiserror;
pub mod biginteger;
pub use biginteger::*;
pub mod bititerator;
pub use bititerator::*;
#[macro_use]
pub mod bits;
pub use bits::*;
#[macro_use]
pub mod bytes;
pub use bytes::*;
pub mod error;
pub use error::*;
pub mod errors;
pub use errors::*;
pub mod iterator;
pub use iterator::*;
pub mod math;
pub use math::*;
#[macro_use]
pub mod parallel;
pub use parallel::*;
pub mod rand;
pub use self::rand::*;
pub mod serialize;
pub use serialize::*;
#[cfg(not(feature = "std"))]
pub mod io;
#[cfg(not(feature = "std"))]
pub fn error(_msg: &'static str) -> io::Error {
io::Error
}
#[cfg(feature = "std")]
pub fn error(msg: &'static str) -> io::Error {
io::Error::new(io::ErrorKind::Other, msg)
}
#[macro_export]
macro_rules! unwrap_option_or_continue {
( $e:expr ) => {
match $e {
Some(x) => x,
None => continue,
}
};
}
#[macro_export]
macro_rules! unwrap_result_or_continue {
( $e:expr ) => {
match $e {
Ok(x) => x,
Err(_) => continue,
}
};
}
#[macro_export]
macro_rules! unwrap_option_or_error {
($e:expr; $err:expr) => {
match $e {
Some(val) => val,
None => return Err($err),
}
};
}
use std::sync::atomic::{AtomicBool, AtomicU64};
thread_local!(pub static PROCESSING_SNARK_PARAMS: AtomicBool = AtomicBool::new(false));
thread_local!(pub static SNARK_PARAMS_AFFINE_COUNT: AtomicU64 = AtomicU64::new(0));