Skip to main content

rib/interpreter/
rib_function_invoke.rs

1use 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>);