sui_rpc/proto/sui/rpc/v2/
executed_transaction.rs1use super::*;
2use crate::field::FieldMaskTree;
3use crate::merge::Merge;
4
5impl Merge<&ExecutedTransaction> for ExecutedTransaction {
6 fn merge(&mut self, source: &ExecutedTransaction, mask: &FieldMaskTree) {
7 let ExecutedTransaction {
8 digest,
9 transaction,
10 signatures,
11 effects,
12 events,
13 checkpoint,
14 timestamp,
15 balance_changes,
16 objects,
17 transaction_index,
18 } = source;
19
20 if mask.contains(Self::DIGEST_FIELD.name) {
21 self.digest = digest.clone();
22 }
23
24 if let Some(submask) = mask.subtree(Self::TRANSACTION_FIELD.name) {
25 self.transaction = transaction
26 .as_ref()
27 .map(|t| Transaction::merge_from(t, &submask));
28 }
29
30 if let Some(submask) = mask.subtree(Self::SIGNATURES_FIELD.name) {
31 self.signatures = signatures
32 .iter()
33 .map(|s| UserSignature::merge_from(s, &submask))
34 .collect();
35 }
36
37 if let Some(submask) = mask.subtree(Self::EFFECTS_FIELD.name) {
38 self.effects = effects
39 .as_ref()
40 .map(|e| TransactionEffects::merge_from(e, &submask));
41 }
42
43 if let Some(submask) = mask.subtree(Self::EVENTS_FIELD.name) {
44 self.events = events
45 .as_ref()
46 .map(|events| TransactionEvents::merge_from(events, &submask));
47 }
48
49 if mask.contains(Self::CHECKPOINT_FIELD.name) {
50 self.checkpoint = *checkpoint;
51 }
52
53 if mask.contains(Self::TIMESTAMP_FIELD.name) {
54 self.timestamp = *timestamp;
55 }
56
57 if mask.contains(Self::BALANCE_CHANGES_FIELD.name) {
58 self.balance_changes = balance_changes.clone();
59 }
60
61 if let Some(submask) = mask.subtree(Self::OBJECTS_FIELD) {
62 self.objects = objects
63 .as_ref()
64 .map(|objects| ObjectSet::merge_from(objects, &submask));
65 }
66
67 if mask.contains(Self::TRANSACTION_INDEX_FIELD.name) {
68 self.transaction_index = *transaction_index;
69 }
70 }
71}