use super::{types::Type, Context}; /// an abstract element that performs some kind of computation on inputs #[derive(Debug)] pub struct Expr<'ty> { pub id: u32, pub inputs: Vec>, pub typ: Type<'ty>, } #[derive(Debug)] pub struct Signal<'ty> { pub id: u32, pub typ: Type<'ty>, } /// A block of HDL code, e.g. comb block #[derive(Debug)] pub struct Block<'ty> { pub signals: Vec>, pub expr: Expr<'ty>, }