npsd 0.2.0

Network payload serializer / deserializer framework
Documentation
const fn const_max(a: usize, b: usize) -> usize {
    [a, b][(a < b) as usize]
}

pub const fn size_add(v0: Option<usize>, v1: Option<usize>) -> Option<usize> {
    if let Some(v0) = v0 {
        if let Some(v1) = v1 {
            return Some(v0 + v1);
        }
    }
    
    None
}

pub const fn size_mul(v0: Option<usize>, v1: usize) -> Option<usize> {
    if let Some(len) = v0 {
        Some(len * v1)
    } else {
        None
    }
}

pub const fn size_max(v0: Option<usize>, v1: Option<usize>) -> Option<usize> {
    if let Some(v0) = v0 {
        if let Some(v1) = v1 {
            return Some(const_max(v0, v1));
        }
    }

    None
}

pub const fn size_array<const N: usize>(v0: [Option<usize>; N]) -> Option<usize> {
    let mut total_size = 0usize;
    let mut i = 0;

    while i < N {
        match v0[i] {
            Some(size) => total_size += size,
            None => return None,
        }
        i += 1;
    }

    Some(total_size)
}