Skip to main content

revmc_backend/
lib.rs

1#![doc = include_str!("../README.md")]
2#![allow(missing_docs)]
3#![cfg_attr(not(test), warn(unused_extern_crates))]
4#![cfg_attr(docsrs, feature(doc_cfg))]
5
6mod traits;
7pub use traits::*;
8
9#[doc(no_inline)]
10pub use eyre;
11#[doc(no_inline)]
12pub use ruint::{self, aliases::U256, uint};
13
14mod pointer;
15pub use pointer::{Pointer, PointerBase};
16
17/// Compilation result.
18pub type Result<T, E = Error> = std::result::Result<T, E>;
19
20/// Compilation error.
21pub type Error = eyre::Error;
22
23/// Returns a [`Display`](std::fmt::Display) formatter for a byte count in human-readable form
24/// (e.g. `"1.5 KiB"`, `"3.2 MiB"`).
25pub fn format_bytes(bytes: usize) -> impl std::fmt::Display {
26    std::fmt::from_fn(move |f| {
27        if bytes < 1024 {
28            write!(f, "{bytes} B")
29        } else if bytes < 1024 * 1024 {
30            write!(f, "{:.1} KiB ({bytes} B)", bytes as f64 / 1024.0)
31        } else {
32            write!(f, "{:.1} MiB ({bytes} B)", bytes as f64 / (1024.0 * 1024.0))
33        }
34    })
35}