anvil_zksync_common/utils/
format.rs1use alloy::hex;
2
3pub fn trimmed_hex(s: &[u8]) -> String {
4 let n = 32;
5 if s.len() <= n {
6 hex::encode(s)
7 } else {
8 format!(
9 "{}…{} ({} bytes)",
10 &hex::encode(&s[..n / 2]),
11 &hex::encode(&s[s.len() - n / 2..]),
12 s.len(),
13 )
14 }
15}
16
17pub fn write_interspersed<T>(
18 f: &mut std::fmt::Formatter<'_>,
19 iter: impl Iterator<Item = T>,
20 separator: &str,
21) -> std::fmt::Result
22where
23 T: std::fmt::Display,
24{
25 for (i, value) in iter.enumerate() {
26 if i > 0 {
27 f.write_str(separator)?;
28 }
29 value.fmt(f)?;
30 }
31 Ok(())
32}
33
34#[cfg(test)]
35mod tests {
36 use alloy::hex;
37
38 use super::*;
39 #[test]
40 fn test_trimmed_hex() {
41 assert_eq!(
42 trimmed_hex(&hex::decode("1234567890").unwrap()),
43 "1234567890"
44 );
45 assert_eq!(
46 trimmed_hex(&hex::decode("492077697368207275737420737570706F72746564206869676865722D6B696E646564207479706573").unwrap()),
47 "49207769736820727573742073757070…6865722d6b696e646564207479706573 (41 bytes)"
48 );
49 }
50}