Skip to main content

Deserializable

Trait Deserializable 

Source
pub trait Deserializable: Sized {
    // Required method
    fn read_from<R>(source: &mut R) -> Result<Self, DeserializationError>
       where R: ByteReader;

    // Provided methods
    fn min_serialized_size() -> usize { ... }
    fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError> { ... }
    fn read_from_bytes_with_budget(
        bytes: &[u8],
        budget: usize,
    ) -> Result<Self, DeserializationError> { ... }
}
Expand description

Re-export the entire miden_client crate so external projects can use a single dependency. Defines how to deserialize Self from bytes.

Required Methods§

Source

fn read_from<R>(source: &mut R) -> Result<Self, DeserializationError>
where R: ByteReader,

Reads a sequence of bytes from the provided source, attempts to deserialize these bytes into Self, and returns the result.

§Errors

Returns an error if:

  • The source does not contain enough bytes to deserialize Self.
  • Bytes read from the source do not represent a valid value for Self.

Provided Methods§

Source

fn min_serialized_size() -> usize

Returns the minimum serialized size for one instance of this type.

This is used by ByteReader::max_alloc to estimate how many elements can be deserialized from the remaining budget, preventing denial-of-service attacks from malicious length prefixes.

The default implementation returns size_of::<Self>(), which is conservative: it may reject valid input for types where the serialized size is smaller than the in-memory size (e.g., structs with computed/cached fields that aren’t serialized).

Override this method for types where the serialized representation is smaller than the in-memory representation to allow more elements to be deserialized.

Source

fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>

Attempts to deserialize the provided bytes into Self and returns the result.

§Errors

Returns an error if:

  • The bytes do not contain enough information to deserialize Self.
  • The bytes do not represent a valid value for Self.

Note: if bytes contains more data than needed to deserialize self, no error is returned.

Source

fn read_from_bytes_with_budget( bytes: &[u8], budget: usize, ) -> Result<Self, DeserializationError>

Deserializes Self from bytes with a byte budget limit.

This is the recommended method for deserializing untrusted input. The budget limits how many bytes can be consumed during deserialization, preventing denial-of-service attacks that exploit length fields to cause huge allocations.

§Errors

Returns an error if:

  • The budget is exhausted before deserialization completes.
  • The bytes do not contain enough information to deserialize Self.
  • The bytes do not represent a valid value for Self.

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 Deserializable for Attribute

Source§

impl Deserializable for MetaExpr

Source§

impl Deserializable for ConstantOp

Source§

impl Deserializable for HashKind

Source§

impl Deserializable for ConstantValue

Source§

impl Deserializable for IntValue

Source§

impl Deserializable for DebugVarLocation

Source§

impl Deserializable for Operation

Source§

fn min_serialized_size() -> usize

Returns the minimum serialized size: 1 byte opcode.

Some operations have additional payload (e.g., Push has 8 bytes for Felt), but the minimum is just the opcode byte.

Source§

fn read_from<R>(source: &mut R) -> Result<Operation, DeserializationError>
where R: ByteReader,

Source§

impl Deserializable for HashFunction

Source§

impl Deserializable for SealingKey

Source§

impl Deserializable for UnsealingKey

Source§

impl Deserializable for NodeMutation

Source§

impl Deserializable for DebugTypeInfo

Source§

impl Deserializable for Linkage

Source§

impl Deserializable for WordSchema

Source§

impl Deserializable for AccountUpdateDetails

Source§

impl Deserializable for StorageSlotDelta

Source§

impl Deserializable for AssetCallbackFlag

Source§

impl Deserializable for NoteAttachmentContent

Source§

impl Deserializable for Type

Source§

impl Deserializable for u8

Source§

impl Deserializable for u16

Source§

impl Deserializable for u32

Source§

impl Deserializable for u64

Source§

impl Deserializable for u128

Source§

impl Deserializable for ()

Source§

impl Deserializable for usize

Source§

impl Deserializable for String

Source§

impl Deserializable for PublicInputs

Source§

impl Deserializable for MetaKeyValue

Source§

impl Deserializable for MetaList

Source§

impl Deserializable for Ident

Source§

impl Deserializable for PathBuf

Source§

impl Deserializable for KernelLibrary

NOTE: Serialization of libraries is likely to be deprecated in a future release

Source§

impl Deserializable for WordValue

Source§

impl Deserializable for EcdsaRequest

Source§

impl Deserializable for EddsaRequest

Source§

impl Deserializable for EventId

Source§

impl Deserializable for EventName

Source§

impl Deserializable for DebugVarId

Source§

impl Deserializable for DebugInfo

Source§

impl Deserializable for AsmOpId

Source§

impl Deserializable for DecoratorId

Source§

impl Deserializable for UntrustedMastForest

Source§

fn read_from<R>( source: &mut R, ) -> Result<UntrustedMastForest, DeserializationError>
where R: ByteReader,

Deserializes an super::UntrustedMastForest from a byte reader.

Note: This method does not apply budgeting. For untrusted input, prefer using read_from_bytes which applies budgeted deserialization.

After deserialization, callers should use super::UntrustedMastForest::validate() to verify structural integrity and recompute all node hashes before using the forest.

Source§

fn read_from_bytes( bytes: &[u8], ) -> Result<UntrustedMastForest, DeserializationError>

Deserializes an super::UntrustedMastForest from bytes using budgeted deserialization.

This method uses a crate::serde::BudgetedReader with a budget equal to the input size to protect against denial-of-service attacks from malicious input.

After deserialization, callers should use super::UntrustedMastForest::validate() to verify structural integrity and recompute all node hashes before using the forest.

Source§

impl Deserializable for DebugVarInfo

Source§

impl Deserializable for PrecompileRequest

Source§

impl Deserializable for Kernel

Source§

impl Deserializable for StackInputs

Source§

impl Deserializable for StackOutputs

Source§

impl Deserializable for ProgramInfo

Source§

impl Deserializable for ExecutionProof

Source§

impl Deserializable for EncryptedData

Source§

impl Deserializable for Nonce

Source§

impl Deserializable for SecretKey

Source§

impl Deserializable for EncryptedData

Source§

impl Deserializable for Nonce

Source§

impl Deserializable for SecretKey

Source§

impl Deserializable for PublicKey

Source§

impl Deserializable for SecretKey

Source§

impl Deserializable for Signature

Source§

impl Deserializable for PublicKey

Source§

impl Deserializable for SecretKey

Source§

impl Deserializable for Signature

Source§

impl Deserializable for SignatureHeader

Source§

impl Deserializable for SignaturePoly

Source§

impl Deserializable for Nonce

Source§

impl Deserializable for EphemeralPublicKey

Source§

impl Deserializable for EphemeralPublicKey

Source§

impl Deserializable for SealedMessage

Source§

impl Deserializable for Mmr

Source§

impl Deserializable for PartialMerkleTree

Source§

fn min_serialized_size() -> usize

Minimum serialized size: u64 length prefix (0 entries).

Source§

fn read_from<R>( source: &mut R, ) -> Result<PartialMerkleTree, DeserializationError>
where R: ByteReader,

Source§

impl Deserializable for MerkleProof

Source§

impl Deserializable for RootPath

Source§

impl Deserializable for LineageId

Available on crate feature serde only.
Source§

impl Deserializable for PartialSmt

Source§

impl Deserializable for StoreNode

Source§

impl Deserializable for FileLineCol

Source§

impl Deserializable for ColumnNumber

Source§

impl Deserializable for LineNumber

Source§

impl Deserializable for SourceSpan

Source§

impl Deserializable for Uri

Source§

impl Deserializable for DebugFieldInfo

Source§

impl Deserializable for DebugFileInfo

Source§

impl Deserializable for DebugFunctionInfo

Source§

impl Deserializable for DebugFunctionsSection

Source§

impl Deserializable for DebugInlinedCallInfo

Source§

impl Deserializable for DebugSourcesSection

Source§

impl Deserializable for DebugTypeIdx

Source§

impl Deserializable for DebugTypesSection

Source§

impl Deserializable for DebugVariableInfo

Source§

impl Deserializable for Dependency

Source§

impl Deserializable for PackageId

Source§

impl Deserializable for ConstantExport

Source§

impl Deserializable for TypeExport

Source§

impl Deserializable for AccountIdPrefixV0

Source§

impl Deserializable for AccountIdV0

Source§

impl Deserializable for AccountProcedureRoot

Source§

impl Deserializable for MapSlotSchema

Source§

impl Deserializable for ValueSlotSchema

Source§

impl Deserializable for StorageMapDelta

Source§

impl Deserializable for BatchAccountUpdate

Source§

impl Deserializable for BatchId

Source§

impl Deserializable for BatchNoteTree

Source§

impl Deserializable for OrderedBatches

Source§

impl Deserializable for ProposedBatch

Source§

impl Deserializable for ProvenBatch

Source§

impl Deserializable for AccountTree

Source§

impl Deserializable for AccountWitness

Source§

impl Deserializable for AccountUpdateWitness

Source§

impl Deserializable for BlockAccountUpdate

Source§

impl Deserializable for BlockBody

Source§

impl Deserializable for BlockInputs

Source§

impl Deserializable for BlockProof

Source§

impl Deserializable for Blockchain

Source§

impl Deserializable for FeeParameters

Source§

impl Deserializable for BlockNoteTree

Source§

impl Deserializable for NullifierTree

Source§

impl Deserializable for NullifierWitness

Source§

impl Deserializable for ProposedBlock

Source§

impl Deserializable for ProvenBlock

Source§

impl Deserializable for SignedBlock

Source§

impl Deserializable for TransactionMeasurements

Source§

impl Deserializable for AccountInputs

Source§

impl Deserializable for OrderedTransactionHeaders

Source§

impl Deserializable for PrivateNoteHeader

Source§

impl Deserializable for TransactionOutputs

Source§

impl Deserializable for PartialBlockchain

Source§

impl Deserializable for InputNoteCommitment

Source§

impl Deserializable for TxAccountUpdate

Source§

impl Deserializable for TransactionHeader

Source§

impl Deserializable for FunctionType

Provides FunctionType deserialization support via the miden-serde-utils serializer.

This is a temporary implementation to allow type information to be serialized with libraries, but in a future release we’ll either rely on the serde serialization for these types, or provide the serialization implementation in midenc-hir-type instead

Source§

impl Deserializable for Goldilocks

Source§

impl<I, D> Deserializable for CsrMatrix<I, D>
where I: Idx, D: Deserializable,

Source§

fn min_serialized_size() -> usize

Returns the minimum serialized size for a CsrMatrix.

A CsrMatrix serializes as:

  • data_len (vint, minimum 1 byte)
  • data elements (minimum 0 if empty)
  • indptr_len (vint, minimum 1 byte)
  • indptr elements (minimum 0 if empty)

Total minimum: 2 bytes (two vint length prefixes for empty matrix)

Source§

fn read_from<R>(source: &mut R) -> Result<CsrMatrix<I, D>, DeserializationError>
where R: ByteReader,

Source§

impl<I, T> Deserializable for IndexVec<I, T>
where I: Idx, T: Deserializable,

Source§

impl<K, V> Deserializable for BTreeMap<K, V>

Source§

impl<N> Deserializable for OutputNoteCollection<N>
where N: Deserializable, &'a NoteHeader: for<'a> From<&'a N>, NoteId: for<'a> From<&'a N>,

Source§

impl<T1> Deserializable for (T1,)
where T1: Deserializable,

Source§

impl<T1, T2> Deserializable for (T1, T2)

Source§

impl<T1, T2, T3> Deserializable for (T1, T2, T3)

Source§

impl<T1, T2, T3, T4> Deserializable for (T1, T2, T3, T4)

Source§

impl<T1, T2, T3, T4, T5> Deserializable for (T1, T2, T3, T4, T5)

Source§

impl<T1, T2, T3, T4, T5, T6> Deserializable for (T1, T2, T3, T4, T5, T6)

Source§

impl<T> Deserializable for Option<T>
where T: Deserializable,

Source§

fn min_serialized_size() -> usize

Returns 1 (just the bool discriminator).

The Some variant would be 1 + T::min_serialized_size(), but we use the minimum to allow more elements through the early check.

Source§

fn read_from<R>(source: &mut R) -> Result<Option<T>, DeserializationError>
where R: ByteReader,

Source§

impl<T> Deserializable for BTreeSet<T>
where T: Deserializable + Ord,

Source§

impl<T> Deserializable for Vec<T>
where T: Deserializable,

Source§

fn min_serialized_size() -> usize

Returns 1 (the minimum vint length prefix size).

The actual serialized size depends on the number of elements, which we don’t know at the point this is called. Using the minimum allows more elements through the early check; budget enforcement during actual reads provides the real protection.

Source§

fn read_from<R>(source: &mut R) -> Result<Vec<T>, DeserializationError>
where R: ByteReader,

Source§

impl<T> Deserializable for Span<T>
where T: Deserializable,

Source§

impl<T> Deserializable for LexicographicWord<T>
where T: Into<Word> + From<Word>,

Available on not (target_family=wasm and miden).
Source§

impl<T, const C: usize> Deserializable for [T; C]
where T: Deserializable,

Source§

impl<const DEPTH: u8, K, V> Deserializable for MutationSet<DEPTH, K, V>

Source§

fn read_from<R>( source: &mut R, ) -> Result<MutationSet<DEPTH, K, V>, DeserializationError>
where R: ByteReader,

Implementors§

Source§

impl Deserializable for StorageSlotSchema

Source§

impl Deserializable for AccountId

Source§

impl Deserializable for AccountIdPrefix

Source§

impl Deserializable for AccountType

Source§

impl Deserializable for StorageSlotContent

Source§

impl Deserializable for StorageSlotType

Source§

impl Deserializable for AddressId

Source§

impl Deserializable for ModuleKind

Source§

impl Deserializable for Asset

Source§

impl Deserializable for AuthScheme

Source§

impl Deserializable for AuthSecretKey

Source§

impl Deserializable for miden_client_cli::auth::PublicKey

Source§

impl Deserializable for miden_client_cli::auth::Signature

Source§

impl Deserializable for SigningInputs

Source§

impl Deserializable for SmtLeaf

Source§

impl Deserializable for NoteAttachmentKind

Source§

impl Deserializable for NoteFile

Source§

impl Deserializable for NoteType

Source§

impl Deserializable for InputNoteState

Source§

impl Deserializable for OutputNoteState

Source§

impl Deserializable for NoteTagSource

Source§

impl Deserializable for DiscardCause

Source§

impl Deserializable for ForeignAccount

Source§

impl Deserializable for InputNote

Source§

impl Deserializable for OutputNote

Source§

impl Deserializable for RawOutputNote

Source§

impl Deserializable for TransactionStatus

Source§

impl Deserializable for PackageExport

Source§

impl Deserializable for TargetType

Source§

impl Deserializable for AccountComponentMetadata

Source§

impl Deserializable for FeltSchema

Source§

impl Deserializable for SchemaType

Source§

impl Deserializable for StorageSchema

Source§

impl Deserializable for StorageValueName

Source§

impl Deserializable for Account

Source§

impl Deserializable for AccountCode

Source§

impl Deserializable for AccountDelta

Source§

impl Deserializable for AccountFile

Source§

impl Deserializable for AccountHeader

Source§

impl Deserializable for AccountStorage

Source§

impl Deserializable for Address

Source§

impl Deserializable for PartialAccount

Source§

impl Deserializable for PartialStorage

Source§

impl Deserializable for PartialStorageMap

Source§

impl Deserializable for StorageMap

Source§

impl Deserializable for StorageMapKey

Source§

impl Deserializable for StorageSlot

Source§

impl Deserializable for StorageSlotId

Source§

impl Deserializable for StorageSlotName

Source§

impl Deserializable for RoutingParameters

Source§

impl Deserializable for Library

NOTE: Serialization of libraries is likely to be deprecated in a future release

Source§

impl Deserializable for MastForest

Source§

impl Deserializable for AccountStorageDelta

Source§

impl Deserializable for AccountStorageHeader

Source§

impl Deserializable for AccountVaultDelta

Source§

impl Deserializable for AssetVault

Source§

impl Deserializable for AssetVaultKey

Source§

impl Deserializable for AssetWitness

Source§

impl Deserializable for FungibleAsset

Source§

impl Deserializable for FungibleAssetDelta

Source§

impl Deserializable for NonFungibleAsset

Source§

impl Deserializable for NonFungibleAssetDelta

Source§

impl Deserializable for PartialVault

Source§

impl Deserializable for StorageSlotHeader

Source§

impl Deserializable for BlockHeader

Source§

impl Deserializable for miden_client_cli::crypto::rpo_falcon512::PublicKey

Source§

impl Deserializable for miden_client_cli::crypto::rpo_falcon512::SecretKey

Source§

impl Deserializable for miden_client_cli::crypto::rpo_falcon512::Signature

Source§

impl Deserializable for Forest

Source§

impl Deserializable for InOrderIndex

Source§

impl Deserializable for MerklePath

Source§

impl Deserializable for MerkleStore

Source§

impl Deserializable for NodeIndex

Source§

impl Deserializable for PartialMmr

Source§

impl Deserializable for RandomCoin

Source§

impl Deserializable for Smt

Source§

impl Deserializable for SmtProof

Source§

impl Deserializable for SparseMerklePath

Source§

impl Deserializable for BlockNumber

Source§

impl Deserializable for Note

Source§

impl Deserializable for NoteAssets

Source§

impl Deserializable for NoteAttachment

Source§

impl Deserializable for NoteAttachmentScheme

Source§

impl Deserializable for NoteDetails

Source§

impl Deserializable for NoteHeader

Source§

impl Deserializable for NoteId

Source§

impl Deserializable for NoteInclusionProof

Source§

impl Deserializable for NoteLocation

Source§

impl Deserializable for NoteMetadata

Source§

impl Deserializable for NoteRecipient

Source§

impl Deserializable for NoteScript

Source§

impl Deserializable for NoteStorage

Source§

impl Deserializable for NoteTag

Source§

impl Deserializable for Nullifier

Source§

impl Deserializable for PartialNote

Source§

impl Deserializable for NoteInfo

Source§

impl Deserializable for NoteTransportCursor

Source§

impl Deserializable for AccountStorageRequirements

Source§

impl Deserializable for RpcLimits

Source§

impl Deserializable for CommittedNoteState

Source§

impl Deserializable for ConsumedAuthenticatedLocalNoteState

Source§

impl Deserializable for ConsumedExternalNoteState

Source§

impl Deserializable for ConsumedUnauthenticatedLocalNoteState

Source§

impl Deserializable for ExpectedNoteState

Source§

impl Deserializable for InvalidNoteState

Source§

impl Deserializable for NoteSubmissionData

Source§

impl Deserializable for ProcessingAuthenticatedNoteState

Source§

impl Deserializable for ProcessingUnauthenticatedNoteState

Source§

impl Deserializable for UnverifiedNoteState

Source§

impl Deserializable for InputNoteRecord

Source§

impl Deserializable for Felt

Source§

impl Deserializable for Word

Available on not (target_family=wasm and miden).
Source§

impl Deserializable for SyncSummary

Source§

impl Deserializable for AdviceInputs

Source§

impl Deserializable for AdviceMap

Source§

impl Deserializable for ExecutedTransaction

Source§

impl Deserializable for ProvenTransaction

Source§

impl Deserializable for PublicOutputNote

Source§

impl Deserializable for TransactionArgs

Source§

impl Deserializable for TransactionDetails

Source§

impl Deserializable for TransactionId

Source§

impl Deserializable for TransactionInputs

Source§

impl Deserializable for TransactionRequest

Source§

impl Deserializable for TransactionResult

Source§

impl Deserializable for TransactionScript

Source§

impl Deserializable for TransactionStoreUpdate

Source§

impl Deserializable for TransactionSummary

Source§

impl Deserializable for AttributeSet

Source§

impl Deserializable for Package

Source§

impl Deserializable for PackageManifest

Source§

impl Deserializable for ProcedureExport

Source§

impl Deserializable for Program

Source§

impl Deserializable for Section

Source§

impl<T> Deserializable for InputNotes<T>

Source§

impl<const DEPTH: u8> Deserializable for LeafIndex<DEPTH>