rib/interpreter/
rib_function_invoke.rs1use crate::wit_type::WitType;
16use crate::ValueAndType;
17use crate::{ComponentDependencyKey, InstructionId};
18use async_trait::async_trait;
19
20#[async_trait]
21pub trait RibComponentFunctionInvoke {
22 async fn invoke(
23 &self,
24 component_dependency_key: ComponentDependencyKey,
25 instruction_id: &InstructionId,
26 worker_name: EvaluatedWorkerName,
27 function_name: EvaluatedFqFn,
28 args: EvaluatedFnArgs,
29 return_type: Option<WitType>,
30 ) -> RibFunctionInvokeResult;
31}
32
33pub type RibFunctionInvokeResult =
34 Result<Option<ValueAndType>, Box<dyn std::error::Error + Send + Sync>>;
35
36#[derive(Debug)]
37pub struct EvaluatedFqFn(pub String);
38
39#[derive(Clone)]
40pub struct EvaluatedWorkerName(pub String);
41
42pub struct EvaluatedFnArgs(pub Vec<ValueAndType>);