pub struct Bus { /* private fields */ }Expand description
Data structure that helps with managing buses, it allows you to connect &[GateIndex] to it as well as providing a &[GateIndex] to connect to other components.
It is basically syntactic sugar for a set of or gates.
§Example
let input1 = constant(0x01u8);
let input2 = constant(0x10u8);
let bus = Bus::new(&mut g, 8, "bus");
bus.connect(&mut g, &input1);
bus.connect(&mut g, &input2);
let output = g.output(bus.bits(), "result");
let ig = &g.init();
assert_eq!(output.u8(ig), 0x11);Implementations§
Source§impl Bus
impl Bus
Sourcepub fn new<S: Into<String>>(
g: &mut GateGraphBuilder,
width: usize,
name: S,
) -> Self
pub fn new<S: Into<String>>( g: &mut GateGraphBuilder, width: usize, name: S, ) -> Self
Returns a new Bus of width width with name name.
Sourcepub fn connect(&self, g: &mut GateGraphBuilder, other: &[GateIndex])
pub fn connect(&self, g: &mut GateGraphBuilder, other: &[GateIndex])
Connects a &[GateIndex] to the bus, each bit of the output of the bus will be set to the or of every corresponding bit in the inputs.
§Panics
Will panic if other.len() != self.len(). Use connect_some
if this is not your desired behavior.
Sourcepub fn connect_some(&self, g: &mut GateGraphBuilder, other: &[GateIndex])
pub fn connect_some(&self, g: &mut GateGraphBuilder, other: &[GateIndex])
Connects a &[GateIndex] to the bus, each bit of the output of the bus will be set to the or of every corresponding bit in the inputs.
If there are excess bits in other, they won’t get connected to the bus.
If there are missing bits in other only other.len() will be connected to the bus.
Sourcepub fn merge(&self, g: &mut GateGraphBuilder, other: Bus) -> Bus
pub fn merge(&self, g: &mut GateGraphBuilder, other: Bus) -> Bus
Connects the bits of other to self and returns a clone of self.
Sourcepub fn split_wires(&self, g: &mut GateGraphBuilder, other: &mut [Wire])
pub fn split_wires(&self, g: &mut GateGraphBuilder, other: &mut [Wire])
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Bus
impl RefUnwindSafe for Bus
impl Send for Bus
impl Sync for Bus
impl Unpin for Bus
impl UnwindSafe for Bus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)