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§
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§
Sourcefn encode_base_field_iter<'a, W: Write>(
iter: impl Iterator<Item = &'a Self::F>,
writer: &mut W,
) -> Result<()>where
Self::F: 'a,
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).
Sourcefn encode_extension_field_iter<'a, W: Write>(
iter: impl Iterator<Item = &'a Self::EF>,
writer: &mut W,
) -> Result<()>where
Self::EF: 'a,
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).
Sourcefn encode_digest_iter<'a, W: Write>(
iter: impl Iterator<Item = &'a Self::Digest>,
writer: &mut W,
) -> Result<()>where
Self::Digest: 'a,
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).
Sourcefn encode_base_field_slice<W: Write>(
vals: &[Self::F],
writer: &mut W,
) -> Result<()>
fn encode_base_field_slice<W: Write>( vals: &[Self::F], writer: &mut W, ) -> Result<()>
Encode length-prefixed slice of base field elements.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".