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