pub enum MetaPacketRouting<'a, S: SphinxSuite, H: SphinxHeaderSpec> {
    ForwardPath {
        shared_keys: SharedKeys<S::E, S::G>,
        forward_path: &'a [<S::P as Keypair>::Public],
        additional_data_relayer: &'a [H::RelayerData],
        receiver_data: &'a H::PacketReceiverData,
        no_ack: bool,
    },
    Surb(SURB<S, H>, &'a H::PacketReceiverData),
}Expand description
Describes how a MetaPacket should be routed to the destination.
Variants§
ForwardPath
Uses an explicitly given path to deliver the packet.
Fields
Shared keys with individual hops
§
forward_path: &'a [<S::P as Keypair>::Public]Public keys on the path corresponding to the shared keys
§
additional_data_relayer: &'a [H::RelayerData]Additional data for individual relayers
§
receiver_data: &'a H::PacketReceiverDataAdditional data delivered to the packet’s final recipient.
Surb(SURB<S, H>, &'a H::PacketReceiverData)
Uses a SURB to deliver the packet and some additional data to the SURB’s creator.
Auto Trait Implementations§
impl<'a, S, H> Freeze for MetaPacketRouting<'a, S, H>where
    <H as SphinxHeaderSpec>::KeyId: Freeze,
    <H as SphinxHeaderSpec>::SurbReceiverData: Freeze,
    <<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: Freeze,
impl<'a, S, H> RefUnwindSafe for MetaPacketRouting<'a, S, H>where
    <H as SphinxHeaderSpec>::PacketReceiverData: RefUnwindSafe,
    <H as SphinxHeaderSpec>::KeyId: RefUnwindSafe,
    <H as SphinxHeaderSpec>::SurbReceiverData: RefUnwindSafe,
    <<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: RefUnwindSafe,
    <<S as SphinxSuite>::P as Keypair>::Public: RefUnwindSafe,
    <H as SphinxHeaderSpec>::RelayerData: RefUnwindSafe,
    <S as SphinxSuite>::E: RefUnwindSafe,
    <S as SphinxSuite>::G: RefUnwindSafe,
    H: RefUnwindSafe,
impl<'a, S, H> Send for MetaPacketRouting<'a, S, H>where
    <H as SphinxHeaderSpec>::PacketReceiverData: Sync,
    <H as SphinxHeaderSpec>::KeyId: Send,
    <H as SphinxHeaderSpec>::SurbReceiverData: Send,
    <<S as SphinxSuite>::P as Keypair>::Public: Sync,
    <H as SphinxHeaderSpec>::RelayerData: Sync,
    <S as SphinxSuite>::E: Send,
    <S as SphinxSuite>::G: Send,
    H: Send,
impl<'a, S, H> Sync for MetaPacketRouting<'a, S, H>where
    <H as SphinxHeaderSpec>::PacketReceiverData: Sync,
    <H as SphinxHeaderSpec>::KeyId: Sync,
    <H as SphinxHeaderSpec>::SurbReceiverData: Sync,
    <<S as SphinxSuite>::P as Keypair>::Public: Sync,
    <H as SphinxHeaderSpec>::RelayerData: Sync,
    <S as SphinxSuite>::E: Sync,
    <S as SphinxSuite>::G: Sync,
    H: Sync,
impl<'a, S, H> Unpin for MetaPacketRouting<'a, S, H>where
    <H as SphinxHeaderSpec>::KeyId: Unpin,
    <H as SphinxHeaderSpec>::SurbReceiverData: Unpin,
    <<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: Unpin,
    <S as SphinxSuite>::E: Unpin,
    <S as SphinxSuite>::G: Unpin,
    H: Unpin,
impl<'a, S, H> UnwindSafe for MetaPacketRouting<'a, S, H>where
    <H as SphinxHeaderSpec>::PacketReceiverData: RefUnwindSafe,
    <H as SphinxHeaderSpec>::KeyId: UnwindSafe,
    <H as SphinxHeaderSpec>::SurbReceiverData: UnwindSafe,
    <<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: UnwindSafe,
    <<S as SphinxSuite>::P as Keypair>::Public: RefUnwindSafe,
    <H as SphinxHeaderSpec>::RelayerData: RefUnwindSafe,
    <S as SphinxSuite>::E: UnwindSafe,
    <S as SphinxSuite>::G: UnwindSafe,
    H: UnwindSafe,
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
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> 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>
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 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>
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