penumbra_proto

Trait DomainType

Source
pub trait DomainType
where Self: Clone + Sized + TryFrom<Self::Proto>, Self::Proto: Name + Message + Default + From<Self> + Send + Sync + 'static, Error: From<<Self as TryFrom<Self::Proto>>::Error>,
{ type Proto; // Provided methods fn encode_to_vec(&self) -> Vec<u8> { ... } fn to_proto(&self) -> Self::Proto { ... } fn decode<B: Buf>(buf: B) -> Result<Self> { ... } }
Expand description

A marker type that captures the relationships between a domain type (Self) and a protobuf type (Self::Proto).

Required Associated Types§

Provided Methods§

Source

fn encode_to_vec(&self) -> Vec<u8>

Encode this domain type to a byte vector, via proto type P.

Source

fn to_proto(&self) -> Self::Proto

Convert this domain type to the associated proto type.

This uses the From impl internally, so it works exactly like .into(), but does not require type inference.

Source

fn decode<B: Buf>(buf: B) -> Result<Self>

Decode this domain type from a byte buffer, via proto type P.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl DomainType for PublicKey

Source§

impl DomainType for Clue

Source§

impl DomainType for Signature<Binding>

Source§

impl DomainType for Signature<SpendAuth>

Source§

impl DomainType for VerificationKey<SpendAuth>

Source§

impl DomainType for ChannelEnd

Source§

type Proto = Channel

Source§

impl DomainType for ClientPaths

Source§

type Proto = ClientPaths

Source§

impl DomainType for ClientState

Source§

type Proto = Any

Source§

impl DomainType for ConnectionEnd

Source§

type Proto = ConnectionEnd

Source§

impl DomainType for ConsensusState

Source§

type Proto = Any

Source§

impl DomainType for Height

Source§

type Proto = Height

Implementors§