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;
37
38pub mod bits;
39pub use self::bits::*;
40
41pub mod fields;
42
43pub mod groups;
44
45mod instantiated;
46
47#[cfg(feature = "bls12_377")]
48pub use instantiated::bls12_377;
49
50#[cfg(feature = "edwards_bls12")]
51pub use instantiated::edwards_bls12;
52
53#[cfg(feature = "edwards_sw6")]
54pub use instantiated::edwards_sw6;
55
56#[cfg(feature = "jubjub")]
57pub use instantiated::jubjub;
58
59pub mod pairing;
60
61pub mod alloc;
62pub mod eq;
63pub mod select;
64
65pub mod prelude {
66 pub use crate::{
67 alloc::*,
68 bits::{boolean::Boolean, uint32::UInt32, uint8::UInt8, ToBitsGadget, ToBytesGadget},
69 eq::*,
70 fields::FieldGadget,
71 groups::GroupGadget,
72 instantiated::*,
73 pairing::PairingGadget,
74 select::*,
75 };
76}
77
78pub trait Assignment<T> {
79 fn get(self) -> Result<T, r1cs_core::SynthesisError>;
80}
81
82impl<T> Assignment<T> for Option<T> {
83 fn get(self) -> Result<T, r1cs_core::SynthesisError> {
84 self.ok_or_else(|| r1cs_core::SynthesisError::AssignmentMissing)
85 }
86}