brec_node_lib 0.1.0

A flexible binary format for storing and streaming structured data as packets with CRC protection and recoverability from corruption. Built for extensibility and robustness.
Documentation
mod error;
mod packet;

pub use error::*;
pub use napi;
use napi::{Unknown, bindgen_prelude::FromNapiValue};
pub use packet::*;

#[enum_ids::enum_ids(display_variant_snake)]
#[derive(Clone, Copy, Debug)]
pub enum NapiFieldHint {
    Bool,
    U8,
    U16,
    U32,
    I8,
    I16,
    I32,
    I64,
    U64,
    I128,
    U128,
    String,
    F64,
    Vec,
    Option,
    Blob,
    Blocks,
    Payload,
    Object,
}

#[inline]
pub fn from_unknown<T: FromNapiValue>(
    hint: NapiFieldHint,
    value: Unknown<'_>,
) -> Result<T, NapiError> {
    FromNapiValue::from_unknown(value).map_err(|err| NapiError::invalid_field(hint, err))
}

#[inline]
pub fn from_unknown_name<T: FromNapiValue>(
    name: impl Into<String>,
    value: Unknown<'_>,
) -> Result<T, NapiError> {
    FromNapiValue::from_unknown(value).map_err(|err| NapiError::invalid_field_name(name, err))
}