use hydro2_network_wire_derive::NetworkWire;
use hydro2_basic_operators::*;
use hydro2_operator::*;
use std::marker::PhantomData;
use std::fmt::{self,Display,Debug};
#[derive(Debug,Clone,NetworkWire)]
#[available_operators(
// The macro expansions create references to FooIO, BarIO<Z>,
// so we must define those types or stubs.
op="AddOp",
op="ConstantOp<Z>"
)]
pub struct MyWireA<Z:ExampleTrait>
where Z: Display + Copy + Debug + Send + Sync + PartialEq,
{
_p: PhantomData<Z>,
}
pub trait ExampleTrait {}
#[derive(PartialEq,Eq,Clone,Copy,Debug,Default)]
pub struct ExampleZ;
impl Display for ExampleZ {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
writeln!(f,"ExampleZ")
}
}
impl ExampleTrait for ExampleZ {}
fn main() {
let _ = MyWireAIO::<ExampleZ>::AddOpIO(AddOpIO::default());
let _ = MyWireAIO::<ExampleZ>::ConstantOpIO(ConstantOpIO::<ExampleZ>::default());
}