From 6f0c9cf943035666c5256287949928e311e8fb46 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 8 Nov 2025 13:27:02 +0500 Subject: [PATCH] handlers --- src/node/handler.rs | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/node/handler.rs diff --git a/src/node/handler.rs b/src/node/handler.rs new file mode 100644 index 0000000..018d4dd --- /dev/null +++ b/src/node/handler.rs @@ -0,0 +1,53 @@ +pub trait NodeHandler { + fn run(&self, inputs: Vec) -> f64; +} + +pub struct NodeFunction { + function: fn(Vec) -> f64, +} + +impl NodeFunction { + pub fn new(function: fn(Vec) -> f64) -> NodeFunction { + NodeFunction { function } + } +} + +impl NodeHandler for NodeFunction { + fn run(&self, inputs: Vec) -> f64 { + (self.function)(inputs) + } +} + +pub struct NodeNumber { + number: f64, +} + +impl NodeNumber { + pub fn new(number: Option) -> NodeNumber { + NodeNumber { + number: number.unwrap_or(0f64), + } + } +} + +impl NodeHandler for NodeNumber { + fn run(&self, inputs: Vec) -> f64 { + self.number + } +} + +pub struct NodeVariable { + getter: fn() -> f64, +} + +impl NodeVariable { + pub fn new(getter: fn() -> f64) -> NodeVariable { + NodeVariable { getter } + } +} + +impl NodeHandler for NodeVariable { + fn run(&self, inputs: Vec) -> f64 { + (self.getter)() + } +}