wick_config/config/common/
operation_definition.rs1#![allow(missing_docs)] use std::borrow::Cow;
4
5use wick_interface_types::Field;
6
7use crate::config::components::OperationConfig;
8
9#[derive(Debug, derive_builder::Builder, Clone, property::Property, serde::Serialize)]
10#[property(get(disable), set(private), mut(disable))]
11#[builder(setter(into))]
12pub struct OperationDefinition {
14 pub(crate) name: String,
16
17 #[builder(default)]
19 #[serde(skip_serializing_if = "Vec::is_empty")]
20 pub(crate) config: Vec<Field>,
21
22 #[builder(default)]
24 #[serde(skip_serializing_if = "Vec::is_empty")]
25 pub(crate) inputs: Vec<Field>,
26
27 #[builder(default)]
29 #[serde(skip_serializing_if = "Vec::is_empty")]
30 pub(crate) outputs: Vec<Field>,
31}
32
33impl OperationConfig for OperationDefinition {
34 fn name(&self) -> &str {
35 &self.name
36 }
37
38 fn inputs(&self) -> Cow<Vec<Field>> {
39 Cow::Borrowed(&self.inputs)
40 }
41
42 fn outputs(&self) -> Cow<Vec<Field>> {
43 Cow::Borrowed(&self.outputs)
44 }
45}