-
Notifications
You must be signed in to change notification settings - Fork 169
/
Copy pathlib.rs
131 lines (111 loc) · 3.61 KB
/
lib.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#![no_std]
#[macro_use]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
/// This is an implementation of `std::assert_matches::assert_matches`
/// so it can be removed when that feature stabilizes upstream
#[macro_export]
macro_rules! assert_matches {
($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) => {
match $left {
$( $pattern )|+ $( if $guard )? => {}
ref left_val => {
panic!(r#"
assertion failed: `(left matches right)`
left: `{:?}`,
right: `{}`"#, left_val, stringify!($($pattern)|+ $(if $guard)?));
}
}
};
($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )?, $msg:literal $(,)?) => {
match $left {
$( $pattern )|+ $( if $guard )? => {}
ref left_val => {
panic!(concat!(r#"
assertion failed: `(left matches right)`
left: `{:?}`,
right: `{}`
"#, $msg), left_val, stringify!($($pattern)|+ $(if $guard)?));
}
}
};
($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )?, $msg:literal, $($arg:tt)+) => {
match $left {
$( $pattern )|+ $( if $guard )? => {}
ref left_val => {
panic!(concat!(r#"
assertion failed: `(left matches right)`
left: `{:?}`,
right: `{}`
"#, $msg), left_val, stringify!($($pattern)|+ $(if $guard)?), $($arg)+);
}
}
}
}
pub mod chiplets;
pub mod debuginfo;
pub mod errors;
mod program;
pub use program::{Program, ProgramInfo};
mod kernel;
pub use kernel::Kernel;
pub use miden_crypto::{Word, EMPTY_WORD, ONE, WORD_SIZE, ZERO};
pub mod crypto {
pub mod merkle {
pub use miden_crypto::merkle::{
DefaultMerkleStore, EmptySubtreeRoots, InnerNodeInfo, LeafIndex, MerkleError,
MerklePath, MerkleStore, MerkleTree, Mmr, MmrPeaks, NodeIndex, PartialMerkleTree,
RecordingMerkleStore, SimpleSmt, Smt, SmtProof, SmtProofError, StoreNode, SMT_DEPTH,
};
}
pub mod hash {
pub use miden_crypto::hash::{
blake::{Blake3Digest, Blake3_160, Blake3_192, Blake3_256},
rpo::{Rpo256, RpoDigest},
rpx::{Rpx256, RpxDigest},
ElementHasher, Hasher,
};
}
pub mod random {
pub use miden_crypto::rand::{
RandomCoin, RandomCoinError, RpoRandomCoin, RpxRandomCoin, WinterRandomCoin,
};
}
pub mod dsa {
pub use miden_crypto::dsa::rpo_falcon512;
}
}
pub mod mast;
pub use math::{
fields::{f64::BaseElement as Felt, QuadExtension},
polynom, ExtensionOf, FieldElement, StarkField, ToElements,
};
pub mod prettier {
pub use miden_formatting::{prettier::*, pretty_via_display, pretty_via_to_string};
/// Pretty-print a list of [PrettyPrint] values as comma-separated items.
pub fn pretty_print_csv<'a, T>(items: impl IntoIterator<Item = &'a T>) -> Document
where
T: PrettyPrint + 'a,
{
let mut doc = Document::Empty;
for (i, item) in items.into_iter().enumerate() {
if i > 0 {
doc += const_text(", ");
}
doc += item.render();
}
doc
}
}
mod operations;
pub use operations::{
opcode_constants::*, AdviceInjector, AssemblyOp, DebugOptions, Decorator, DecoratorIterator,
DecoratorList, Operation, SignatureKind,
};
pub mod stack;
pub use stack::{StackInputs, StackOutputs};
pub mod utils;
// TYPE ALIASES
// ================================================================================================
pub type StackTopState = [Felt; stack::MIN_STACK_DEPTH];