Skip to main content

calimero_sys/
types.rs

1mod bool;
2mod buffer;
3mod event;
4mod location;
5mod pointer;
6mod r#ref;
7mod register;
8mod xcall;
9
10pub use bool::*;
11pub use buffer::*;
12pub use event::*;
13pub use location::*;
14pub use pointer::*;
15pub use r#ref::*;
16pub use register::*;
17pub use xcall::*;
18
19#[repr(C, u64)]
20#[derive(Clone, Copy, Debug, Eq, PartialEq)]
21pub enum ValueReturn<'a> {
22    Ok(Buffer<'a>),
23    Err(Buffer<'a>),
24}
25
26impl<'a, T, E> From<Result<&'a T, &'a E>> for ValueReturn<'a>
27where
28    T: AsRef<[u8]>,
29    E: AsRef<[u8]>,
30{
31    #[inline]
32    fn from(result: Result<&'a T, &'a E>) -> Self {
33        match result {
34            Ok(value) => ValueReturn::Ok(Buffer::new(value)),
35            Err(value) => ValueReturn::Err(Buffer::new(value)),
36        }
37    }
38}
39
40#[cfg(not(any(target_pointer_width = "64", target_arch = "wasm32")))]
41compile_error!(
42    "calimero-sys assumes you're compiling for a 64-bit target or wasm32, which you are not. Please file an issue"
43);