later 0.0.48

Distributed Background jobs manager and runner for Rust
//! Encoding helpers for payloads and internal records.

use serde::{de::DeserializeOwned, Serialize};

/// Encodes a value with MessagePack for storage or delivery.
pub fn encode(input: impl Serialize) -> anyhow::Result<Vec<u8>> {
    Ok(rmp_serde::to_vec(&input)?)
}

/// Encodes a value as JSON text.
pub fn encode_json(input: impl Serialize) -> anyhow::Result<String> {
    Ok(serde_json::to_string_pretty(&input)?)
}

/// Decodes a MessagePack value produced by [`encode`].
pub fn decode<T: DeserializeOwned>(input: &[u8]) -> anyhow::Result<T> {
    Ok(rmp_serde::from_slice(input)?)
}

/// Returns a lowercase BLAKE3 hash of the input bytes.
pub fn hash(input: &[u8]) -> String {
    blake3::hash(input).to_hex().to_lowercase()
}