refactor(aura-engine): rename NodeHandle::in_/out to input/output

The trailing underscore on in_() was a keyword-escape scar (`in` is reserved).
Rename the NodeHandle port/field accessors to input()/output(), which also
aligns the authoring surface with the schema's own nomenclature
(NodeSchema.inputs/output, "input port"/"output field"): node.input("lhs")
now reads in the same vocabulary the schema uses, instead of a second one.

Mechanical, behaviour-preserving: the two method definitions plus every call
site in builder.rs and the aura-cli sample blueprints. Full workspace green;
clippy --all-targets -D warnings clean.
This commit is contained in:
2026-06-14 10:35:52 +02:00
parent 50105c1957
commit b6174cff80
2 changed files with 48 additions and 48 deletions
+20 -20
View File
@@ -38,11 +38,11 @@ pub struct OutPort {
impl NodeHandle {
/// Address an input port of this node by name (resolved at [`GraphBuilder::build`]).
pub fn in_(self, name: &'static str) -> InPort {
pub fn input(self, name: &'static str) -> InPort {
InPort { node: self.0, name }
}
/// Address this node's output field by name (resolved at [`GraphBuilder::build`]).
pub fn out(self, name: &'static str) -> OutPort {
pub fn output(self, name: &'static str) -> OutPort {
OutPort { node: self.0, name }
}
}
@@ -214,10 +214,10 @@ mod tests {
let slow = g.add(Sma::builder().named("slow"));
let sub = g.add(Sub::builder());
let price = g.input_role("price");
g.feed(price, [fast.in_("series"), slow.in_("series")]);
g.connect(fast.out("value"), sub.in_("lhs"));
g.connect(slow.out("value"), sub.in_("rhs"));
g.expose(sub.out("value"), "out");
g.feed(price, [fast.input("series"), slow.input("series")]);
g.connect(fast.output("value"), sub.input("lhs"));
g.connect(slow.output("value"), sub.input("rhs"));
g.expose(sub.output("value"), "out");
g.build().expect("sma_cross resolves")
}
@@ -256,11 +256,11 @@ mod tests {
let eq = g.add(Recorder::builder(vec![ScalarKind::F64], Firing::Any, tx_eq));
let ex = g.add(Recorder::builder(vec![ScalarKind::F64], Firing::Any, tx_ex));
let src = g.source_role("src", ScalarKind::F64);
g.feed(src, [xross.in_("price"), broker.in_("price")]);
g.connect(xross.out("out"), expo.in_("signal"));
g.connect(expo.out("exposure"), broker.in_("exposure"));
g.connect(broker.out("equity"), eq.in_("col[0]"));
g.connect(expo.out("exposure"), ex.in_("col[0]"));
g.feed(src, [xross.input("price"), broker.input("price")]);
g.connect(xross.output("out"), expo.input("signal"));
g.connect(expo.output("exposure"), broker.input("exposure"));
g.connect(broker.output("equity"), eq.input("col[0]"));
g.connect(expo.output("exposure"), ex.input("col[0]"));
let built_flat = g
.build()
.expect("root resolves")
@@ -276,7 +276,7 @@ mod tests {
let mut g = GraphBuilder::new("x");
let a = g.add(Sma::builder());
let b = g.add(Sub::builder());
g.connect(a.out("value"), b.in_("nope"));
g.connect(a.output("value"), b.input("nope"));
// `.err()`, not `.unwrap_err()`: the latter would require `Composite: Debug`
// (the Ok type), which it is not (it holds a `Box<dyn Fn>` builder closure).
assert_eq!(
@@ -290,7 +290,7 @@ mod tests {
let mut g = GraphBuilder::new("x");
let a = g.add(Sma::builder());
let b = g.add(Sub::builder());
g.connect(a.out("nope"), b.in_("lhs"));
g.connect(a.output("nope"), b.input("lhs"));
assert_eq!(
g.build().err(),
Some(BuildError::UnknownOutPort { node: 0, name: "nope".into() })
@@ -306,7 +306,7 @@ mod tests {
let third = g1.add(Sub::builder()); // NodeHandle(2)
let mut g2 = GraphBuilder::new("g2");
let only = g2.add(Sub::builder()); // NodeHandle(0)
g2.connect(third.out("value"), only.in_("lhs"));
g2.connect(third.output("value"), only.input("lhs"));
assert_eq!(g2.build().err(), Some(BuildError::BadHandle { node: 2 }));
}
@@ -326,7 +326,7 @@ mod tests {
let mut g = GraphBuilder::new("outer");
let c = g.add(inner);
let src = g.source_role("s", ScalarKind::F64);
g.feed(src, [c.in_("x")]);
g.feed(src, [c.input("x")]);
assert_eq!(
g.build().err(),
Some(BuildError::AmbiguousInPort { node: 0, name: "x".into() })
@@ -349,7 +349,7 @@ mod tests {
let mut g = GraphBuilder::new("outer");
let c = g.add(inner);
let snk = g.add(Sub::builder());
g.connect(c.out("o"), snk.in_("lhs"));
g.connect(c.output("o"), snk.input("lhs"));
assert_eq!(
g.build().err(),
Some(BuildError::AmbiguousOutPort { node: 0, name: "o".into() })
@@ -363,16 +363,16 @@ mod tests {
let expo = ok.add(Exposure::builder());
let broker = ok.add(SimBroker::builder(0.0001));
let src = ok.source_role("p", ScalarKind::F64);
ok.feed(src, [expo.in_("signal"), broker.in_("price")]);
ok.connect(expo.out("exposure"), broker.in_("exposure"));
ok.expose(broker.out("equity"), "eq");
ok.feed(src, [expo.input("signal"), broker.input("price")]);
ok.connect(expo.output("exposure"), broker.input("exposure"));
ok.expose(broker.output("equity"), "eq");
assert!(ok.build().is_ok());
// a transposed/typo'd port name is caught, where a bare slot index is not
let mut typo = GraphBuilder::new("typo");
let expo2 = typo.add(Exposure::builder());
let broker2 = typo.add(SimBroker::builder(0.0001));
typo.connect(expo2.out("exposure"), broker2.in_("pirce"));
typo.connect(expo2.output("exposure"), broker2.input("pirce"));
assert_eq!(
typo.build().err(),
Some(BuildError::UnknownInPort { node: 1, name: "pirce".into() })