snarkvm_circuit_program/data/value/
mod.rs1mod equal;
17mod find;
18mod to_bits;
19mod to_fields;
20
21use crate::{Access, Entry, Future, Plaintext, Record};
22use snarkvm_circuit_network::Aleo;
23use snarkvm_circuit_types::{Boolean, Field, environment::prelude::*};
24
25#[derive(Clone)]
26pub enum Value<A: Aleo> {
27 Plaintext(Plaintext<A>),
29 Record(Record<A, Plaintext<A>>),
31 Future(Future<A>),
33}
34
35impl<A: Aleo> Inject for Value<A> {
36 type Primitive = console::Value<A::Network>;
37
38 fn new(mode: Mode, value: Self::Primitive) -> Self {
40 match value {
41 console::Value::Plaintext(plaintext) => Value::Plaintext(Plaintext::new(mode, plaintext)),
42 console::Value::Record(record) => Value::Record(Record::new(Mode::Private, record)),
43 console::Value::Future(future) => Value::Future(Future::new(mode, future)),
44 }
45 }
46}
47
48impl<A: Aleo> Eject for Value<A> {
49 type Primitive = console::Value<A::Network>;
50
51 fn eject_mode(&self) -> Mode {
53 match self {
54 Value::Plaintext(plaintext) => plaintext.eject_mode(),
55 Value::Record(record) => record.eject_mode(),
56 Value::Future(future) => future.eject_mode(),
57 }
58 }
59
60 fn eject_value(&self) -> Self::Primitive {
62 match self {
63 Value::Plaintext(plaintext) => console::Value::Plaintext(plaintext.eject_value()),
64 Value::Record(record) => console::Value::Record(record.eject_value()),
65 Value::Future(future) => console::Value::Future(future.eject_value()),
66 }
67 }
68}