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 } = source;
18
19 if mask.contains(Self::DIGEST_FIELD.name) {
20 self.digest = digest.clone();
21 }
22
23 if let Some(submask) = mask.subtree(Self::TRANSACTION_FIELD.name) {
24 self.transaction = transaction
25 .as_ref()
26 .map(|t| Transaction::merge_from(t, &submask));
27 }
28
29 if let Some(submask) = mask.subtree(Self::SIGNATURES_FIELD.name) {
30 self.signatures = signatures
31 .iter()
32 .map(|s| UserSignature::merge_from(s, &submask))
33 .collect();
34 }
35
36 if let Some(submask) = mask.subtree(Self::EFFECTS_FIELD.name) {
37 self.effects = effects
38 .as_ref()
39 .map(|e| TransactionEffects::merge_from(e, &submask));
40 }
41
42 if let Some(submask) = mask.subtree(Self::EVENTS_FIELD.name) {
43 self.events = events
44 .as_ref()
45 .map(|events| TransactionEvents::merge_from(events, &submask));
46 }
47
48 if mask.contains(Self::CHECKPOINT_FIELD.name) {
49 self.checkpoint = *checkpoint;
50 }
51
52 if mask.contains(Self::TIMESTAMP_FIELD.name) {
53 self.timestamp = *timestamp;
54 }
55
56 if mask.contains(Self::BALANCE_CHANGES_FIELD.name) {
57 self.balance_changes = balance_changes.clone();
58 }
59
60 if let Some(submask) = mask.subtree(Self::OBJECTS_FIELD) {
61 self.objects = objects
62 .as_ref()
63 .map(|objects| ObjectSet::merge_from(objects, &submask));
64 }
65 }
66}