flarrow_builtins/
enumeration.rs1use crate::prelude::*;
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash)]
5pub enum Builtin {
6 Timer,
7 Printer,
8 Transport,
9}
10
11impl Builtin {
12 pub fn from_string(str: impl AsRef<str>) -> Result<Self> {
14 match str.as_ref() {
15 "timer" => Ok(Builtin::Timer),
16 "printer" => Ok(Builtin::Printer),
17 "transport" => Ok(Builtin::Transport),
18 _ => Err(eyre::eyre!("Invalid builtin name")),
19 }
20 }
21}
22
23pub async fn new_builtin(
25 builtin: Builtin,
26 inputs: Inputs,
27 outputs: Outputs,
28 queries: Queries,
29 queryables: Queryables,
30 configuration: serde_yml::Value,
31) -> Result<Box<dyn Node>> {
32 match builtin {
33 Builtin::Timer => Timer::new(inputs, outputs, queries, queryables, configuration)
34 .await
35 .wrap_err("Failed to await statically linked node")?,
36 Builtin::Printer => Printer::new(inputs, outputs, queries, queryables, configuration)
37 .await
38 .wrap_err("Failed to await statically linked node")?,
39 Builtin::Transport => Transport::new(inputs, outputs, queries, queryables, configuration)
40 .await
41 .wrap_err("Failed to await statically linked node")?,
42 }
43}