pub fn add_feedback_with_export<I, O, Op>(
        &self,
        operator: Op,
    ) -> (ExportStream<P, O>, FeedbackConnector<Self, I, O, Op>)
    where
        I: Data,
        O: Data,
        Op: StrictUnaryOperator<I, O>,
    {
        self.add_node(|id| {
            self.log_circuit_event(&CircuitEvent::strict_operator_output(
                GlobalNodeId::child_of(self, id),
                operator.name(),
            ));

            let operator = Rc::new(UnsafeCell::new(operator));
            let connector = FeedbackConnector::new(id, self.clone(), operator.clone());
            let output_node = FeedbackOutputNode::new(operator, self.clone(), id);
            let local = output_node.output_stream();
            let export = output_node.export_stream.clone();
            (output_node, (ExportStream { local, export }, connector))
        })
    }
/// Like `add_feedback`, but additionally makes the output of the operator
/// available to the parent circuit.
///
/// Normally a strict operator writes a value computed based on inputs from
/// previous clock cycles to its output stream at the start of each new
/// clock cycle.  When the local clock epoch ends, the last value
/// computed by the operator (that would otherwise be dropped) is
/// written to the export stream instead.
///
/// # Examples
///
/// See example in the [`Self::iterate`] method.
Like `add_feedback`, but additionally makes the output of the operator
available to the parent circuit.

Normally a strict operator writes a value computed based on inputs from
previous clock cycles to its output stream at the start of each new
clock cycle.  When the local clock epoch ends, the last value
computed by the operator (that would otherwise be dropped) is
written to the export stream instead.
Like ` add_feedback ` but additionally makes the output of the operator available to the parent circuit . Normally a strict operator writes a value computed based on inputs from previous clock cycles to its output stream at the start of each new clock cycle . When the local clock epoch ends the last value computed by the operator ( that would otherwise be dropped ) is written to the export stream instead .
pub fn add_feedback_with_export<I, O, Op>(
        &self,
        operator: Op,
    ) -> (ExportStream<P, O>, FeedbackConnector<Self, I, O, Op>)
    where
        I: Data,
        O: Data,
        Op: StrictUnaryOperator<I, O>,
    {
        self.add_node(|id| {
            self.log_circuit_event(&CircuitEvent::strict_operator_output(
                GlobalNodeId::child_of(self, id),
                operator.name(),
            ));
            let operator = Rc::new(UnsafeCell::new(operator));
            let connector = FeedbackConnector::new(id, self.clone(), operator.clone());
            let output_node = FeedbackOutputNode::new(operator, self.clone(), id);
            let local = output_node.output_stream();
            let export = output_node.export_stream.clone();
            (output_node, (ExportStream { local, export }, connector))
        })
    }
pub fn add_feedback_with_export < I , O , Op > ( & self , operator : Op , ) -> ( ExportStream < P , O > , FeedbackConnector < Self , I , O , Op > ) where I : Data , O : Data , Op : StrictUnaryOperator < I , O > , { self . add_node ( | id | { self . log_circuit_event ( & CircuitEvent :: strict_operator_output ( GlobalNodeId :: child_of ( self , id ) , operator . name ( ) , ) ) ; let operator = Rc :: new ( UnsafeCell :: new ( operator ) ) ; let connector = FeedbackConnector :: new ( id , self . clone ( ) , operator . clone ( ) ) ; let output_node = FeedbackOutputNode :: new ( operator , self . clone ( ) , id ) ; let local = output_node . output_stream ( ) ; let export = output_node . export_stream . clone ( ) ; ( output_node , ( ExportStream { local , export } , connector ) ) } ) }
Like `add_feedback`, but additionally makes the output of the operator
available to the parent circuit.
Like ` add_feedback ` but additionally makes the output of the operator available to the parent circuit .
&self
operator
Op
examples
See example in the [`Self::iterate`] method.
See example in the [ ` Self :: iterate ` ] method .