anvil_zksync_common/utils/
format.rs

1use 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}