var searchIndex = {}; searchIndex["cfrp"] = {"doc":"# Concurrent Function Reactive Programming","items":[[3,"Topology","cfrp","`Topology<T>` describes a data flow and controls its execution",null,null],[3,"TopologyHandle","","For explicitly terminating a running topology",null,null],[3,"Builder","","`Builder` provides helpers for building topologies",null,null],[12,"inputs","","",0,null],[12,"runners","","",0,null],[3,"Config","","Topology Configuration",null,null],[12,"buffer_size","","",1,null],[4,"Value","","Value<T> encodes the difference between changed & unchanged data, in\ncases where multiple inputs have been combined.",null,null],[13,"Changed","","",2,null],[13,"Unchanged","","",2,null],[4,"Event","","Container for data as it flows across the topology",null,null],[13,"Changed","","",3,null],[13,"Unchanged","","",3,null],[13,"Exit","","",3,null],[4,"SignalType","","Tag to distinguish unchanging signals from dynamic signals",null,null],[13,"Constant","","",4,null],[13,"Dynamic","","",4,null],[5,"spawn_topology","","Construct a new topology and run it",null,{"inputs":[{"name":"config"},{"name":"f"}],"output":{"name":"topologyhandle"}}],[0,"primitives","","Building blocks for data ingestion and transformation",null,null],[0,"async","cfrp::primitives","",null,null],[3,"Async","cfrp::primitives::async","",null,null],[11,"new","","",5,{"inputs":[{"name":"box"},{"name":"syncsender"}],"output":{"name":"async"}}],[11,"run","","",5,{"inputs":[{"name":"box"}],"output":null}],[0,"channel","cfrp::primitives","",null,null],[3,"Channel","cfrp::primitives::channel","",null,null],[11,"new","","",6,{"inputs":[{"name":"config"},{"name":"receiver"},{"name":"a"}],"output":{"name":"channel"}}],[11,"config","","",6,null],[11,"initial","","",6,null],[11,"push_to","","",6,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[0,"fold","cfrp::primitives","",null,null],[3,"FoldSignal","cfrp::primitives::fold","The result of a `fold` operation",null,null],[11,"new","","",7,{"inputs":[{"name":"config"},{"name":"box"},{"name":"b"},{"name":"f"}],"output":{"name":"self"}}],[11,"config","","",7,null],[11,"initial","","",7,null],[11,"push_to","","",7,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[0,"fork","cfrp::primitives","",null,null],[3,"Fork","cfrp::primitives::fork","",null,null],[3,"Branch","","A data source of type `A` which can be used as input more than once",null,null],[11,"new","","",8,{"inputs":[{"name":"box"},{"name":"arc"}],"output":{"name":"fork"}}],[11,"run","","",8,{"inputs":[{"name":"box"}],"output":null}],[11,"new","","",9,{"inputs":[{"name":"config"},{"name":"arc"},{"name":"option"},{"name":"signaltype"}],"output":{"name":"branch"}}],[11,"config","","",9,null],[11,"initial","","",9,null],[11,"push_to","","",9,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[11,"init","","",9,null],[11,"clone","","",9,null],[0,"input","cfrp::primitives","",null,null],[3,"ReceiverInput","cfrp::primitives::input","",null,null],[3,"AckInput","","",null,null],[3,"RngInput","","",null,null],[8,"NoOp","","",null,null],[10,"send_no_change","","",10,null],[10,"send_exit","","",10,null],[8,"RunInput","","",null,null],[10,"run","","",11,{"inputs":[{"name":"box"},{"name":"usize"},{"name":"arc"}],"output":null}],[10,"boxed_no_op","","",11,null],[11,"new","","",12,{"inputs":[{"name":"receiver"},{"name":"syncsender"}],"output":{"name":"receiverinput"}}],[11,"boxed_no_op","","",12,null],[11,"run","","",12,{"inputs":[{"name":"box"},{"name":"usize"},{"name":"arc"}],"output":null}],[11,"clone","","",13,null],[11,"new","","",13,{"inputs":[{"name":"a"},{"name":"syncsender"}],"output":{"name":"self"}}],[11,"run","","",13,{"inputs":[{"name":"box"},{"name":"usize"},{"name":"arc"}],"output":null}],[11,"boxed_no_op","","",13,null],[11,"send_no_change","","",13,null],[11,"send_exit","","",13,null],[11,"clone","","",14,null],[11,"new","","",14,{"inputs":[{"name":"r"},{"name":"syncsender"}],"output":{"name":"self"}}],[11,"run","","",14,{"inputs":[{"name":"box"},{"name":"usize"},{"name":"arc"}],"output":null}],[11,"boxed_no_op","","",14,null],[11,"send_no_change","","",14,null],[11,"send_exit","","",14,null],[0,"lift","cfrp::primitives","",null,null],[3,"LiftSignal","cfrp::primitives::lift","The result of a `lift` operation",null,null],[11,"new","","",15,{"inputs":[{"name":"config"},{"name":"box"},{"name":"f"}],"output":{"name":"self"}}],[11,"config","","",15,null],[11,"initial","","",15,null],[11,"push_to","","",15,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[0,"lift2","cfrp::primitives","",null,null],[3,"Lift2Signal","cfrp::primitives::lift2","The result of a `lift2` operation",null,null],[11,"new","","",16,{"inputs":[{"name":"config"},{"name":"box"},{"name":"box"},{"name":"f"}],"output":{"name":"self"}}],[11,"config","","",16,null],[11,"initial","","",16,null],[11,"push_to","","",16,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[0,"value","cfrp::primitives","",null,null],[3,"Value","cfrp::primitives::value","",null,null],[11,"clone","","",17,null],[11,"new","","",17,{"inputs":[{"name":"config"},{"name":"a"}],"output":{"name":"self"}}],[11,"config","","",17,null],[11,"initial","","",17,null],[11,"push_to","","",17,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[11,"new","cfrp","Create a new topology",18,{"inputs":[{"name":"vec"},{"name":"vec"}],"output":{"name":"self"}}],[11,"run","","Run the topology",18,null],[11,"stop","","",19,null],[11,"new","","Create a new Builder",0,{"inputs":[{"name":"config"}],"output":{"name":"self"}}],[11,"listen","","Listen to `input` and push received data into the topology",0,null],[11,"value","","Creats a channel with constant value `v`",0,null],[11,"every","","Returns a signal which emits the "current" time every at every `interval`",0,null],[11,"ack_value","","Creates a channel which pushes `Event::Changed(initial)` when any\nother channel receives changes",0,null],[11,"ack_counter","","Return a signal that increments each time the topology receives data",0,null],[11,"ack_timestamp","","Return a signal with the 'current' time each time the topology receives\ndata",0,null],[11,"ack_random","","Return a signal which generates a random value each time the topology\nreceives data",0,null],[11,"add","","Add a signal to the topology",0,null],[11,"async","","Combination of adding a signal and a channel",0,null],[11,"fmt","","",1,null],[11,"clone","","",1,null],[11,"default","","",1,{"inputs":[],"output":{"name":"config"}}],[11,"into_inner","","Returns the contained value",2,null],[11,"deref","","",2,null],[11,"deref_mut","","",2,null],[11,"clone","","",2,null],[11,"eq","","",2,null],[11,"fmt","","",2,null],[11,"fmt","","",2,null],[11,"default","","",2,{"inputs":[],"output":{"name":"value"}}],[11,"partial_cmp","","",2,null],[11,"cmp","","",2,null],[11,"next","","",2,null],[11,"next_back","","",2,null],[11,"len","","",2,null],[8,"SignalExt","","Methods for manipulating signals",null,null],[11,"lift","","Transform in input signal into an output signal",20,null],[11,"lift2","","Combine two signals into an output signal",20,null],[11,"fold","","Merge data from a signal into an accumulator and return a signal with\nthe accumulator's value",20,null],[11,"add_to","","Sugar for `Builder::add`",20,null],[11,"async","","Sugar for `Builder::async`",20,null],[11,"map","","Alias of `lift`",20,null],[11,"zip","","Takes two input signals and returns a signal containing 2-tuples\nof elements from the input signals.",20,null],[11,"enumerate","","Same as `Iterator::enumerate`.",20,null],[11,"filter","","Filter an input stream by a predicate function `F`.",20,null],[11,"inspect","","Pass each value in a signal to `F` before sending it to an output\nsignal. ",20,null],[8,"Signal","","Types which can serve as a data source",null,null],[10,"config","","",21,null],[11,"init","","",21,null],[10,"initial","","",21,null],[10,"push_to","","",21,{"inputs":[{"name":"box"},{"name":"option"}],"output":null}],[8,"Push","","Types which can receive incoming data from other signals",null,null],[10,"push","","",22,null],[8,"Run","","Types which can initiate a chain of transformations",null,null],[10,"run","","",23,{"inputs":[{"name":"box"}],"output":null}],[11,"clone","","",3,null],[11,"clone","","",4,null],[11,"lift","","Transform in input signal into an output signal",20,null],[11,"lift2","","Combine two signals into an output signal",20,null],[11,"fold","","Merge data from a signal into an accumulator and return a signal with\nthe accumulator's value",20,null],[11,"add_to","","Sugar for `Builder::add`",20,null],[11,"async","","Sugar for `Builder::async`",20,null],[11,"map","","Alias of `lift`",20,null],[11,"zip","","Takes two input signals and returns a signal containing 2-tuples\nof elements from the input signals.",20,null],[11,"enumerate","","Same as `Iterator::enumerate`.",20,null],[11,"filter","","Filter an input stream by a predicate function `F`.",20,null],[11,"inspect","","Pass each value in a signal to `F` before sending it to an output\nsignal. ",20,null]],"paths":[[3,"Builder"],[3,"Config"],[4,"Value"],[4,"Event"],[4,"SignalType"],[3,"Async"],[3,"Channel"],[3,"FoldSignal"],[3,"Fork"],[3,"Branch"],[8,"NoOp"],[8,"RunInput"],[3,"ReceiverInput"],[3,"AckInput"],[3,"RngInput"],[3,"LiftSignal"],[3,"Lift2Signal"],[3,"Value"],[3,"Topology"],[3,"TopologyHandle"],[8,"SignalExt"],[8,"Signal"],[8,"Push"],[8,"Run"]]}; initSearch(searchIndex);