runa/crates/runa-core/src/lib.rs

35 lines
1.0 KiB
Rust
Raw Normal View History

//! Small stable identity types shared across workspace layers.
use std::fmt;
mod log;
mod value;
pub use log::{LogEntry, LogLevel};
pub use value::{ActorRef, MAX_VALUE_BYTES, MAX_VALUE_DEPTH, MAX_VALUE_NODES, Value};
macro_rules! digest_id {
($name:ident, $prefix:literal) => {
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct $name(pub [u8; 32]);
impl fmt::Debug for $name {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(formatter, "{}", self)
}
}
impl fmt::Display for $name {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(formatter, concat!($prefix, ":blake3:"))?;
for byte in self.0 {
write!(formatter, "{byte:02x}")?;
}
Ok(())
}
}
};
}
digest_id!(SourceId, "runa-source:v1");
digest_id!(ImplementationId, "runa-implementation:v1");