rust_play_digital/
initsig.rs

1use std::rc::Rc;
2use crate::common::Digital;
3use crate::Digital1Line;
4use crate::output::{DigitalState, State};
5#[allow(unused)]
6///The InitSig structure provides the initial input level signal source for the circuit.
7#[derive(Debug, Clone)]
8pub struct InitSig {
9    output_state: DigitalState,
10    times: usize,
11}
12impl Digital1Line for InitSig{}
13impl Digital for InitSig {
14    fn get_output(&self) -> DigitalState {
15        self.output_state.clone()
16    }
17}
18impl InitSig {
19    pub fn new(output_state: Vec<Option<State>>) -> Rc<Self> {
20        let times = output_state.len();
21        let output_state = DigitalState::new(vec![output_state.clone()], 1, times);
22        Rc::new(Self {
23            output_state,
24            times,
25        })
26    }
27
28    pub fn output_state(&self) -> DigitalState {
29        self.output_state.clone()
30    }
31
32    pub fn times(&self) -> usize {
33        self.times
34    }
35}