miden_stdlib_sys/intrinsics/
felt.rs1pub use miden_field::Felt;
4
5#[cfg(all(target_family = "wasm", miden))]
6unsafe extern "C" {
7 #[cfg_attr(all(target_family = "wasm", miden), linkage = "extern_weak")]
8 #[link_name = "intrinsics::felt::assert"]
9 fn extern_assert(a: Felt);
10 #[cfg_attr(all(target_family = "wasm", miden), linkage = "extern_weak")]
11 #[link_name = "intrinsics::felt::assertz"]
12 fn extern_assertz(a: Felt);
13 #[cfg_attr(all(target_family = "wasm", miden), linkage = "extern_weak")]
14 #[link_name = "intrinsics::felt::assert_eq"]
15 fn extern_assert_eq(a: Felt, b: Felt);
16}
17
18#[cfg(all(target_family = "wasm", miden))]
20#[inline(always)]
21pub fn assert(a: Felt) {
22 unsafe { extern_assert(a) }
23}
24
25#[cfg(all(target_family = "wasm", miden))]
27#[inline(always)]
28pub fn assertz(a: Felt) {
29 unsafe { extern_assertz(a) }
30}
31
32#[cfg(all(target_family = "wasm", miden))]
34#[inline(always)]
35pub fn assert_eq(a: Felt, b: Felt) {
36 unsafe { extern_assert_eq(a, b) }
37}
38
39#[cfg(not(all(target_family = "wasm", miden)))]
41#[inline(always)]
42pub fn assert(a: Felt) {
43 if a != Felt::new(1).unwrap() {
44 panic!("assert: expected 1");
45 }
46}
47
48#[cfg(not(all(target_family = "wasm", miden)))]
50#[inline(always)]
51pub fn assertz(a: Felt) {
52 if a != Felt::new(0).unwrap() {
53 panic!("assertz: expected 0");
54 }
55}
56
57#[cfg(not(all(target_family = "wasm", miden)))]
59#[inline(always)]
60pub fn assert_eq(a: Felt, b: Felt) {
61 if a != b {
62 panic!("assert_eq: values differ");
63 }
64}
65
66#[macro_export]
69macro_rules! felt {
70 ($value:literal) => {{
72 const VALUE: u64 = $value as u64;
73 $crate::Felt::new(VALUE).unwrap()
75 }};
76}