rib/interpreter/
rib_function_invoke.rs1use crate::wit_type::WitType;
2use crate::ValueAndType;
3use crate::{ComponentDependencyKey, InstructionId};
4use async_trait::async_trait;
5
6#[async_trait]
7pub trait RibComponentFunctionInvoke {
8 async fn invoke(
9 &self,
10 component_dependency_key: ComponentDependencyKey,
11 instruction_id: &InstructionId,
12 worker_name: EvaluatedWorkerName,
13 function_name: EvaluatedFqFn,
14 args: EvaluatedFnArgs,
15 return_type: Option<WitType>,
16 ) -> RibFunctionInvokeResult;
17}
18
19pub type RibFunctionInvokeResult =
20 Result<Option<ValueAndType>, Box<dyn std::error::Error + Send + Sync>>;
21
22#[derive(Debug)]
23pub struct EvaluatedFqFn(pub String);
24
25#[derive(Clone)]
26pub struct EvaluatedWorkerName(pub String);
27
28pub struct EvaluatedFnArgs(pub Vec<ValueAndType>);