traverse_runtime/trace/
private.rs1use serde::{Deserialize, Serialize};
4use sha2::{Digest, Sha256};
5use std::fmt::Write as _;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
12pub struct PrivateTraceEntry {
13 pub trace_id: String,
15 pub inputs_hash: String,
17 pub outputs_hash: String,
19 pub resource_usage_ms: u64,
21}
22
23impl PrivateTraceEntry {
24 #[must_use]
26 pub fn new(trace_id: String, inputs: &str, outputs: &str, resource_usage_ms: u64) -> Self {
27 Self {
28 trace_id,
29 inputs_hash: sha256_hex(inputs),
30 outputs_hash: sha256_hex(outputs),
31 resource_usage_ms,
32 }
33 }
34}
35
36fn sha256_hex(data: &str) -> String {
38 let mut hasher = Sha256::new();
39 hasher.update(data.as_bytes());
40 hasher
41 .finalize()
42 .iter()
43 .fold(String::new(), |mut acc, byte| {
44 let _ = write!(acc, "{byte:02x}");
45 acc
46 })
47}