sui_rpc/proto/sui/rpc/v2beta2/
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 input_objects,
17 output_objects,
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::INPUT_OBJECTS_FIELD.name) {
62 self.input_objects = input_objects
63 .iter()
64 .map(|object| Object::merge_from(object, &submask))
65 .collect();
66 }
67
68 if let Some(submask) = mask.subtree(Self::OUTPUT_OBJECTS_FIELD.name) {
69 self.output_objects = output_objects
70 .iter()
71 .map(|object| Object::merge_from(object, &submask))
72 .collect();
73 }
74 }
75}