arnaucube
arnaucube/ark-r1cs-stdPublic Self-hosted repository
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}