ark-r1cs-std/r1cs-std/src/lib.rs
r1cs-std/src/lib.rsRaw
1#![cfg_attr(not(feature = "std"), no_std)]
2#![deny(unused_import_braces, unused_qualifications, trivial_casts)]
3#![deny(trivial_numeric_casts, variant_size_differences, unreachable_pub)]
4#![deny(non_shorthand_field_patterns, unused_attributes, unused_imports)]
5#![deny(unused_extern_crates, renamed_and_removed_lints, unused_allocation)]
6#![deny(unused_comparisons, bare_trait_objects, const_err, unused_must_use)]
7#![deny(unused_mut, unused_unsafe, private_in_public, unsafe_code)]
8#![forbid(unsafe_code)]
9
10#[cfg(all(test, not(feature = "std")))]
11#[macro_use]
12extern crate std;
13
14#[cfg(not(feature = "std"))]
15extern crate alloc as ralloc;
16
17#[macro_use]
18extern crate algebra;
19
20#[macro_use]
21extern crate derivative;
22
23/// used by test_constraint_system
24#[cfg(not(feature = "std"))]
25macro_rules! println {
26 () => {};
27 ($($arg: tt)*) => {};
28}
29
30#[cfg(not(feature = "std"))]
31use ralloc::{collections::BTreeMap, string::String, vec::Vec};
32
33#[cfg(feature = "std")]
34use std::{collections::BTreeMap, string::String, vec::Vec};
35
36pub mod test_constraint_counter;
37pub mod test_constraint_system;
38
39pub mod bits;
40pub use self::bits::*;
41
42pub mod fields;
43
44pub mod groups;
45
46mod instantiated;
47
48#[cfg(feature = "bls12_377")]
49pub use instantiated::bls12_377;
50
51#[cfg(feature = "edwards_bls12")]
52pub use instantiated::edwards_bls12;
53
54#[cfg(feature = "edwards_sw6")]
55pub use instantiated::edwards_sw6;
56
57#[cfg(feature = "jubjub")]
58pub use instantiated::jubjub;
59
60#[cfg(feature = "mnt4_298")]
61pub use instantiated::mnt4_298;
62
63#[cfg(feature = "mnt4_753")]
64pub use instantiated::mnt4_753;
65
66#[cfg(feature = "mnt6_298")]
67pub use instantiated::mnt6_298;
68
69#[cfg(feature = "mnt6_753")]
70pub use instantiated::mnt6_753;
71
72pub mod pairing;
73
74pub mod alloc;
75pub mod eq;
76pub mod select;
77
78pub mod prelude {
79 pub use crate::{
80 alloc::*,
81 bits::{boolean::Boolean, uint32::UInt32, uint8::UInt8, ToBitsGadget, ToBytesGadget},
82 eq::*,
83 fields::FieldGadget,
84 groups::GroupGadget,
85 instantiated::*,
86 pairing::PairingGadget,
87 select::*,
88 };
89}
90
91pub trait Assignment<T> {
92 fn get(self) -> Result<T, r1cs_core::SynthesisError>;
93}
94
95impl<T> Assignment<T> for Option<T> {
96 fn get(self) -> Result<T, r1cs_core::SynthesisError> {
97 self.ok_or_else(|| r1cs_core::SynthesisError::AssignmentMissing)
98 }
99}