pub struct TransactionSchema<T: InstructionDecoderCollection> {
pub root: Vec<SchemaNode<T>>,
}
Expand description
Represents the schema for a transaction, defining the structure and expected instructions.
TransactionSchema
allows you to define the structure of a transaction by
specifying a list of SchemaNode
elements at the root level. These nodes
can represent specific instruction types or allow for flexibility with Any
nodes. Nested instructions are supported to enable complex hierarchical
schemas.
§Methods
match_schema
: Attempts to match the transaction’s instructions against the schema, returning a deserialized representation of the data.match_nodes
: Matches the instructions against the schema nodes, returning a mapping of instruction names to data, if successful.
Fields§
§root: Vec<SchemaNode<T>>
Implementations§
Source§impl<T: InstructionDecoderCollection> TransactionSchema<T>
impl<T: InstructionDecoderCollection> TransactionSchema<T>
Sourcepub fn match_schema<U>(
&self,
instructions: &[ParsedInstruction<T>],
) -> Option<U>where
U: DeserializeOwned,
pub fn match_schema<U>(
&self,
instructions: &[ParsedInstruction<T>],
) -> Option<U>where
U: DeserializeOwned,
Matches the transaction’s instructions against the schema and returns a deserialized result.
§Parameters
instructions
: A slice ofParsedInstruction
representing the instructions to be matched.
§Returns
An Option<U>
containing the deserialized data if matching and
deserialization are successful. The U represents the expected output
type, manually made by the developer.
Sourcepub fn match_nodes(
&self,
instructions: &[ParsedInstruction<T>],
) -> Option<HashMap<String, (T, Vec<AccountMeta>)>>
pub fn match_nodes( &self, instructions: &[ParsedInstruction<T>], ) -> Option<HashMap<String, (T, Vec<AccountMeta>)>>
Matches the instructions against the schema nodes and returns a mapping of instruction names to data.
This method processes the instructions and checks them against the
schema nodes sequentially. If the instructions match, a HashMap
of
instruction names to decoded data and associated accounts is returned.
§Parameters
instructions
: A slice ofParsedInstruction
representing the instructions to be matched.
§Returns
An Option<HashMap<String, (T, Vec<AccountMeta>)>>
containing the
matched instruction data, or None
if the instructions do not match
the schema.
Trait Implementations§
Source§impl<T: Clone + InstructionDecoderCollection> Clone for TransactionSchema<T>
impl<T: Clone + InstructionDecoderCollection> Clone for TransactionSchema<T>
Source§fn clone(&self) -> TransactionSchema<T>
fn clone(&self) -> TransactionSchema<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<T> Freeze for TransactionSchema<T>
impl<T> RefUnwindSafe for TransactionSchema<T>
impl<T> Send for TransactionSchema<T>
impl<T> Sync for TransactionSchema<T>
impl<T> Unpin for TransactionSchema<T>
impl<T> UnwindSafe for TransactionSchema<T>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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