pub enum NetworkSend {
Custom {
serialize_fn: Option<DebugExpr>,
},
Embedded {
tag: Option<DebugType>,
element_type: DebugType,
},
}Expand description
How a network channel’s sender prepares each message before it is handed to the transport.
A channel’s serialization is split into a send half (NetworkSend) and a receive half
(NetworkRecv) so that the multi-version simulation merge can reason about each side
independently (the sender fork and the receiver are separate IR nodes).
Variants§
Custom
Serialization is performed within the Hydro dataflow using the provided serialize
expression. This is how channels using crate::networking::Bincode are lowered.
Embedded
Serialization is left to code outside of Hydro (see crate::networking::Embedded). The
raw element_type is passed through unserialized; the only transformation is converting a
routing crate::location::MemberId (the destination cluster tag, when demuxing) into
the raw TaglessMemberId used by the transport. Only supported by the embedded backend.
Stored as structured info (rather than a pre-baked expression) so that the code can be synthesized in a post-IR codegen pass.
Trait Implementations§
Source§impl Clone for NetworkSend
impl Clone for NetworkSend
Source§fn clone(&self) -> NetworkSend
fn clone(&self) -> NetworkSend
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NetworkSend
impl Debug for NetworkSend
Source§impl Hash for NetworkSend
impl Hash for NetworkSend
Auto Trait Implementations§
impl !Send for NetworkSend
impl !Sync for NetworkSend
impl Freeze for NetworkSend
impl RefUnwindSafe for NetworkSend
impl Unpin for NetworkSend
impl UnsafeUnpin for NetworkSend
impl UnwindSafe for NetworkSend
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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