Struct Random

Source
pub struct Random<T: Message = u64> {
    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=42

Fields§

§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>

Source

pub fn new(output: OutputPort<T>) -> Self

Source

pub fn with_params(output: OutputPort<T>, seed: Option<u64>) -> Self

Source§

impl<T: Message + 'static> Random<T>

Source

pub fn with_system(system: &System, seed: Option<u64>) -> Self

Trait Implementations§

Source§

impl<T: Message + Default> Block for Random<T>

Source§

fn execute(&mut self, runtime: &dyn BlockRuntime) -> BlockResult

Executes this block’s computation.
Source§

fn prepare(&mut self, _runtime: &dyn BlockRuntime) -> Result<(), BlockError>

Prepares this block for execution. Read more
Source§

impl<T: Message> BlockDescriptor for Random<T>

Source§

fn inputs(&self) -> Vec<PortDescriptor>

A description of this block’s input ports.
Source§

fn outputs(&self) -> Vec<PortDescriptor>

A description of this block’s output ports.
Source§

fn parameters(&self) -> Vec<ParameterDescriptor>

A description of this block’s parameters.
Source§

fn ports(&self) -> Vec<PortDescriptor>

A description of this block’s I/O ports.
Source§

impl<T: Clone + Message> Clone for Random<T>

Source§

fn clone(&self) -> Random<T>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Message> MaybeLabeled for Random<T>

Source§

fn label(&self) -> Option<Cow<'_, str>>

Returns the human-readable label, if any, of the object.
Source§

fn is_labeled(&self) -> bool

Checks whether the object has a human-readable label.
Source§

impl<T: Message> MaybeNamed for Random<T>

Source§

fn name(&self) -> Option<Cow<'_, str>>

Returns the name, if any, of the object.
Source§

fn is_named(&self) -> bool

Checks whether the object has a name.
Source§

impl StdioSystem for Random<u64>

Auto Trait Implementations§

§

impl<T> Freeze for Random<T>

§

impl<T = u64> !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 = u64> !UnwindSafe for Random<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsBlock for T
where T: Block,

Source§

fn as_block(&self) -> &dyn Block

Source§

impl<T> AsBlockDescriptor for T
where T: BlockDescriptor,

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V