Skip to main content

Tick

Struct Tick 

Source
pub struct Tick<L> { /* private fields */ }
Expand description

Marks the stream as being inside the single global clock domain.

Implementations§

Source§

impl<'a, L> Tick<L>
where L: Location<'a>,

Source

pub fn outer(&self) -> &L

Returns a reference to the outer (parent) location that this tick is nested within.

For example, if a Tick was created from a Process, this returns a reference to that Process.

Source

pub fn spin_batch( &self, batch_size: impl QuotedWithContext<'a, usize, L> + Copy + 'a, ) -> Stream<(), Self, Bounded, TotalOrder, ExactlyOnce>
where L: NoTick,

Creates a bounded stream of () values inside this tick, with a fixed batch size.

This is useful for driving computations inside a tick that need to process a specific number of elements per tick. Each tick will produce exactly batch_size unit values.

Source

pub fn singleton<T>( &self, e: impl QuotedWithContext<'a, T, Tick<L>>, ) -> Singleton<T, Self, Bounded>
where T: Clone,

Constructs a Singleton materialized inside this tick with the given static value.

The singleton will have the provided value on every tick. This is useful for providing constant values to computations inside a tick.

Source

pub fn none<T>(&self) -> Optional<T, Self, Bounded>

Creates an Optional which has a null value on every tick.

§Example
let tick = process.tick();
let optional = tick.none::<i32>();
optional.unwrap_or(tick.singleton(q!(123)))
// 123
Source

pub fn optional_first_tick<T: Clone>( &self, e: impl QuotedWithContext<'a, T, Tick<L>>, ) -> Optional<T, Self, Bounded>

Creates an Optional which will have the provided static value on the first tick, and be null on all subsequent ticks.

This is useful for bootstrapping stateful computations which need an initial value.

§Example
let tick = process.tick();
// ticks are lazy by default, forces the second tick to run
tick.spin_batch(q!(1)).all_ticks().for_each(q!(|_| {}));
let optional = tick.optional_first_tick(q!(5));
optional.unwrap_or(tick.singleton(q!(123))).all_ticks()
// 5, 123, 123, 123, ...
Source

pub fn cycle<S>(&self) -> (TickCycleHandle<'a, S>, S)
where S: CycleCollection<'a, TickCycle, Location = Self> + DeferTick, L: NoTick,

Creates a feedback cycle within this tick for implementing iterative computations.

Returns a handle that must be completed with the actual collection, and a placeholder collection that represents the output of the previous tick (deferred by one tick). This is useful for implementing fixed-point computations where the output of one tick feeds into the input of the next.

The cycle automatically defers values by one tick to prevent infinite recursion.

Source

pub fn cycle_with_initial<S>(&self, initial: S) -> (TickCycleHandle<'a, S>, S)
where S: CycleCollectionWithInitial<'a, TickCycle, Location = Self>,

Creates a feedback cycle with an initial value for the first tick.

Similar to Tick::cycle, but allows providing an initial collection that will be used as the value on the first tick before any feedback is available. This is useful for bootstrapping iterative computations that need a starting state.

Trait Implementations§

Source§

impl<L: Clone> Clone for Tick<L>

Source§

fn clone(&self) -> Tick<L>

Returns a duplicate 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<'a, L> Location<'a> for Tick<L>
where L: Location<'a>,

Source§

type Root = <L as Location<'a>>::Root

The root location type for this location. Read more
Source§

fn root(&self) -> Self::Root

Returns the root location for this location. Read more
Source§

fn try_tick(&self) -> Option<Tick<Self>>

Attempts to create a new Tick clock domain at this location. Read more
Source§

fn id(&self) -> LocationId

Returns the unique identifier for this location.
Source§

fn singleton<T>( &self, e: impl QuotedWithContext<'a, T, Self>, ) -> Singleton<T, Self, Bounded>
where T: Clone, Self: Sized,

Constructs a Singleton materialized at this location with the given static value. Read more
Source§

fn forward_ref<S>(&self) -> (ForwardHandle<'a, S>, S)
where S: CycleCollection<'a, ForwardRef, Location = Self>,

Creates a forward reference for defining recursive or mutually-dependent dataflows. Read more
Source§

impl<'a, L> NoAtomic for Tick<L>
where L: Location<'a>,

Auto Trait Implementations§

§

impl<L> Freeze for Tick<L>
where L: Freeze,

§

impl<L> RefUnwindSafe for Tick<L>
where L: RefUnwindSafe,

§

impl<L> Send for Tick<L>
where L: Send,

§

impl<L> Sync for Tick<L>
where L: Sync,

§

impl<L> Unpin for Tick<L>
where L: Unpin,

§

impl<L> UnsafeUnpin for Tick<L>
where L: UnsafeUnpin,

§

impl<L> UnwindSafe for Tick<L>
where L: UnwindSafe,

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

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> ToSinkBuild for T

Source§

fn iter_to_sink_build(self) -> SendIterBuild<Self>
where Self: Sized + Iterator,

Starts a SinkBuild adaptor chain to send all items from self as an Iterator.
Source§

fn stream_to_sink_build(self) -> SendStreamBuild<Self>
where Self: Sized + Stream,

Starts a SinkBuild adaptor chain to send all items from self as a [Stream].
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more