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_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 = "ed_on_bls12_377")]
 52pub use instantiated::ed_on_bls12_377;
 53
 54#[cfg(feature = "ed_on_mnt4_298")]
 55pub use instantiated::ed_on_mnt4_298;
 56
 57#[cfg(feature = "ed_on_mnt4_753")]
 58pub use instantiated::ed_on_mnt4_753;
 59
 60#[cfg(feature = "ed_on_cp6_782")]
 61pub use instantiated::ed_on_cp6_782;
 62
 63#[cfg(feature = "ed_on_bn254")]
 64pub use instantiated::ed_on_bn254;
 65
 66#[cfg(feature = "ed_on_bls12_381")]
 67pub use instantiated::ed_on_bls12_381;
 68
 69#[cfg(feature = "mnt4_298")]
 70pub use instantiated::mnt4_298;
 71
 72#[cfg(feature = "mnt4_753")]
 73pub use instantiated::mnt4_753;
 74
 75#[cfg(feature = "mnt6_298")]
 76pub use instantiated::mnt6_298;
 77
 78#[cfg(feature = "mnt6_753")]
 79pub use instantiated::mnt6_753;
 80
 81pub mod pairing;
 82
 83pub mod alloc;
 84pub mod eq;
 85pub mod select;
 86
 87pub mod prelude {
 88    pub use crate::{
 89        alloc::*,
 90        bits::{boolean::Boolean, uint32::UInt32, uint8::UInt8, ToBitsGadget, ToBytesGadget},
 91        eq::*,
 92        fields::FieldGadget,
 93        groups::GroupGadget,
 94        instantiated::*,
 95        pairing::PairingGadget,
 96        select::*,
 97    };
 98}
 99
100pub trait Assignment<T> {
101    fn get(self) -> Result<T, r1cs_core::SynthesisError>;
102}
103
104impl<T> Assignment<T> for Option<T> {
105    fn get(self) -> Result<T, r1cs_core::SynthesisError> {
106        self.ok_or_else(|| r1cs_core::SynthesisError::AssignmentMissing)
107    }
108}