Skip to main content

EncodableConfig

Trait EncodableConfig 

Source
pub trait EncodableConfig: StarkProtocolConfig {
    // Required methods
    fn encode_base_field<W: Write>(val: &Self::F, writer: &mut W) -> Result<()>;
    fn encode_extension_field<W: Write>(
        val: &Self::EF,
        writer: &mut W,
    ) -> Result<()>;
    fn encode_digest<W: Write>(val: &Self::Digest, writer: &mut W) -> Result<()>;

    // Provided methods
    fn encode_base_field_iter<'a, W: Write>(
        iter: impl Iterator<Item = &'a Self::F>,
        writer: &mut W,
    ) -> Result<()>
       where Self::F: 'a { ... }
    fn encode_extension_field_iter<'a, W: Write>(
        iter: impl Iterator<Item = &'a Self::EF>,
        writer: &mut W,
    ) -> Result<()>
       where Self::EF: 'a { ... }
    fn encode_digest_iter<'a, W: Write>(
        iter: impl Iterator<Item = &'a Self::Digest>,
        writer: &mut W,
    ) -> Result<()>
       where Self::Digest: 'a { ... }
    fn encode_base_field_slice<W: Write>(
        vals: &[Self::F],
        writer: &mut W,
    ) -> Result<()> { ... }
    fn encode_extension_field_slice<W: Write>(
        vals: &[Self::EF],
        writer: &mut W,
    ) -> Result<()> { ... }
    fn encode_digest_slice<W: Write>(
        vals: &[Self::Digest],
        writer: &mut W,
    ) -> Result<()> { ... }
}
Expand description

StarkProtocolConfig that has encodable associated types. This is a separate trait to avoid Rust’s orphan rule.

Required Methods§

Source

fn encode_base_field<W: Write>(val: &Self::F, writer: &mut W) -> Result<()>

Source

fn encode_extension_field<W: Write>( val: &Self::EF, writer: &mut W, ) -> Result<()>

Source

fn encode_digest<W: Write>(val: &Self::Digest, writer: &mut W) -> Result<()>

Provided Methods§

Source

fn encode_base_field_iter<'a, W: Write>( iter: impl Iterator<Item = &'a Self::F>, writer: &mut W, ) -> Result<()>
where Self::F: 'a,

Encode each element from an iterator (no length prefix).

Source

fn encode_extension_field_iter<'a, W: Write>( iter: impl Iterator<Item = &'a Self::EF>, writer: &mut W, ) -> Result<()>
where Self::EF: 'a,

Encode each element from an iterator (no length prefix).

Source

fn encode_digest_iter<'a, W: Write>( iter: impl Iterator<Item = &'a Self::Digest>, writer: &mut W, ) -> Result<()>
where Self::Digest: 'a,

Encode each element from an iterator (no length prefix).

Source

fn encode_base_field_slice<W: Write>( vals: &[Self::F], writer: &mut W, ) -> Result<()>

Encode length-prefixed slice of base field elements.

Source

fn encode_extension_field_slice<W: Write>( vals: &[Self::EF], writer: &mut W, ) -> Result<()>

Encode length-prefixed slice of extension field elements.

Source

fn encode_digest_slice<W: Write>( vals: &[Self::Digest], writer: &mut W, ) -> Result<()>

Encode length-prefixed slice of digests.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§