pub struct Random<T: Message> {
pub output: OutputPort<T>,
pub seed: Option<u64>,
}Expand description
A block for generating and sending a random value.
§Block Diagram
block-beta
columns 4
Random space:2 Sink
Random-- "output" -->Sink
classDef block height:48px,padding:8px;
classDef hidden visibility:none;
class Random block
class Sink hidden
§Sequence Diagram
sequenceDiagram
autonumber
participant Random as Random block
participant Random.output as Random.output port
participant BlockA as Another block
Random-->>BlockA: Connect
Random->>BlockA: Message
Random-->>Random.output: Close
Random-->>BlockA: Disconnect
§Examples
§Using the block in a system
System::build(|s| {
let random_generator = s.random::<u64>();
let number_encoder = s.encode_lines();
let stdout = s.write_stdout();
s.connect(&random_generator.output, &number_encoder.input);
s.connect(&number_encoder.output, &stdout.input);
});§Running the block via the CLI
$ protoflow execute Random$ protoflow execute Random seed=42Fields§
§output: OutputPort<T>The port to send the value on.
seed: Option<u64>A parameter for the random seed to use.
Implementations§
source§impl<T: Message> Random<T>
impl<T: Message> Random<T>
pub fn new(output: OutputPort<T>) -> Self
pub fn with_params(output: OutputPort<T>, seed: Option<u64>) -> Self
Trait Implementations§
source§impl<T: Message + Default> Block for Random<T>
impl<T: Message + Default> Block for Random<T>
source§fn execute(&mut self, runtime: &dyn BlockRuntime) -> BlockResult
fn execute(&mut self, runtime: &dyn BlockRuntime) -> BlockResult
Executes this block’s computation.
source§fn prepare(&mut self, _runtime: &dyn BlockRuntime) -> Result<(), BlockError>
fn prepare(&mut self, _runtime: &dyn BlockRuntime) -> Result<(), BlockError>
Prepares this block for execution. Read more
source§impl<T: Message> BlockDescriptor for Random<T>
impl<T: Message> BlockDescriptor for Random<T>
source§fn inputs(&self) -> Vec<PortDescriptor>
fn inputs(&self) -> Vec<PortDescriptor>
A description of this block’s input ports.
source§fn outputs(&self) -> Vec<PortDescriptor>
fn outputs(&self) -> Vec<PortDescriptor>
A description of this block’s output ports.
source§fn parameters(&self) -> Vec<ParameterDescriptor>
fn parameters(&self) -> Vec<ParameterDescriptor>
A description of this block’s parameters.
source§impl<T: Message> Definition for Random<T>
impl<T: Message> Definition for Random<T>
fn is_variation(&self) -> bool
source§impl<T: Message> Element for Random<T>
impl<T: Message> Element for Random<T>
source§fn short_name(&self) -> Option<&str>
fn short_name(&self) -> Option<&str>
The short name of the element, if any.
source§fn is_library_element(&self) -> bool
fn is_library_element(&self) -> bool
Whether this
Element is contained in the ownership tree of
a library model.source§fn owning_namespace(&self) -> Option<&dyn Namespace>
fn owning_namespace(&self) -> Option<&dyn Namespace>
source§fn owning_relationship(&self) -> Option<&dyn Relationship>
fn owning_relationship(&self) -> Option<&dyn Relationship>
fn qualified_name(&self) -> Option<QualifiedName>
source§impl<T: Message> MaybeLabeled for Random<T>
impl<T: Message> MaybeLabeled for Random<T>
source§impl<T: Message> MaybeNamed for Random<T>
impl<T: Message> MaybeNamed for Random<T>
source§impl<T: Message> OccurrenceDefinition for Random<T>
impl<T: Message> OccurrenceDefinition for Random<T>
fn is_individual(&self) -> bool
source§impl StdioSystem for Random<u64>
impl StdioSystem for Random<u64>
fn build_system(config: StdioConfig) -> Result<System, StdioError>
source§impl<T: Message> Type for Random<T>
impl<T: Message> Type for Random<T>
fn is_abstract(&self) -> bool
fn is_sufficient(&self) -> bool
fn is_conjugated(&self) -> bool
fn specializes(&self, _supertype: &Self) -> bool
impl<T: Message> BlockDefinition for Random<T>
impl<T: Message> Class for Random<T>
impl<T: Message> Classifier for Random<T>
impl<T: Message> ItemDefinition for Random<T>
impl<T: Message> PartDefinition for Random<T>
impl<T: Message> Structure for Random<T>
Auto Trait Implementations§
impl<T> Freeze for Random<T>
impl<T> !RefUnwindSafe for Random<T>
impl<T> Send for Random<T>
impl<T> Sync for Random<T>
impl<T> Unpin for Random<T>where
T: Unpin,
impl<T> !UnwindSafe for Random<T>
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
Mutably borrows from an owned value. Read more
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)
🔬This is a nightly-only experimental API. (
clone_to_uninit)