pub trait ExtInstance: Debug {
// Required method
fn update(
&mut self,
port: &PortName,
value: Value,
) -> Vec<(PortName, Value)>;
// Provided methods
fn incoming_ports(&self) -> Vec<PortName> { ... }
fn outgoing_ports(&self) -> Vec<PortName> { ... }
fn clock(&mut self) -> Vec<(PortName, Value)> { ... }
fn reset(&mut self) -> Vec<(PortName, Value)> { ... }
}