wick_config/config/common/
interface.rs1#![allow(missing_docs)] use config::common::OperationDefinition;
4use wick_interface_types::{OperationSignatures, TypeDefinition};
5
6use crate::config::components::ComponentConfig;
7use crate::config::{self};
8
9#[derive(Debug, Default, Clone, derive_asset_container::AssetManager, property::Property, serde::Serialize)]
10#[property(get(public), set(private), mut(disable))]
11#[asset(asset(crate::config::AssetReference))]
12#[must_use]
13pub struct InterfaceDefinition {
15 #[asset(skip)]
17 #[serde(skip_serializing_if = "Vec::is_empty")]
18 pub(crate) types: Vec<TypeDefinition>,
19
20 #[asset(skip)]
22 #[property(skip)]
23 #[serde(skip_serializing_if = "Vec::is_empty")]
24 pub(crate) operations: Vec<OperationDefinition>,
25}
26
27impl ComponentConfig for InterfaceDefinition {
28 type Operation = OperationDefinition;
29
30 fn operations(&self) -> &[Self::Operation] {
31 &self.operations
32 }
33
34 fn operations_mut(&mut self) -> &mut Vec<Self::Operation> {
35 &mut self.operations
36 }
37}
38
39impl OperationSignatures for InterfaceDefinition {
40 fn operation_signatures(&self) -> Vec<wick_interface_types::OperationSignature> {
41 self.operations.iter().cloned().map(Into::into).collect()
42 }
43}