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_system;
37pub mod test_constraint_counter;
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
60pub mod pairing;
61
62pub mod alloc;
63pub mod eq;
64pub mod select;
65
66pub mod prelude {
67 pub use crate::{
68 alloc::*,
69 bits::{boolean::Boolean, uint32::UInt32, uint8::UInt8, ToBitsGadget, ToBytesGadget},
70 eq::*,
71 fields::FieldGadget,
72 groups::GroupGadget,
73 instantiated::*,
74 pairing::PairingGadget,
75 select::*,
76 };
77}
78
79pub trait Assignment<T> {
80 fn get(self) -> Result<T, r1cs_core::SynthesisError>;
81}
82
83impl<T> Assignment<T> for Option<T> {
84 fn get(self) -> Result<T, r1cs_core::SynthesisError> {
85 self.ok_or_else(|| r1cs_core::SynthesisError::AssignmentMissing)
86 }
87}