runmat_runtime/builtin/
binding.rs1use runmat_builtins::BuiltinBindingIdentity;
2use runmat_value::Value;
3use std::{future::Future, pin::Pin};
4
5use crate::RuntimeError;
6
7pub type RuntimeBuiltinFuture =
8 Pin<Box<dyn Future<Output = Result<Value, RuntimeError>> + 'static>>;
9pub type RuntimeBuiltinImplementation = fn(&[Value]) -> RuntimeBuiltinFuture;
10
11#[derive(Clone, Copy)]
12#[repr(C)]
13pub struct RuntimeBuiltinBinding {
14 pub identity: BuiltinBindingIdentity,
15 pub implementation: RuntimeBuiltinImplementation,
16}
17
18impl RuntimeBuiltinBinding {
19 pub const fn new(
20 identity: BuiltinBindingIdentity,
21 implementation: RuntimeBuiltinImplementation,
22 ) -> Self {
23 Self {
24 identity,
25 implementation,
26 }
27 }
28}
29
30impl std::fmt::Debug for RuntimeBuiltinBinding {
31 fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32 formatter
33 .debug_struct("RuntimeBuiltinBinding")
34 .field("identity", &self.identity)
35 .finish_non_exhaustive()
36 }
37}