dis-rs 0.13.0

An implementation of the Distributed Interactive Simulation protocol (IEEE-1278.1) in Rust. This main crate contains PDU implementations and facilities to read/write PDUs from Rust data structures to the wire format and vice versa. It supports versions 6 and 7 of the protocol.
Documentation
use crate::v6::entity_state::model::EntityCapabilities;
use nom::bits::bits;
use nom::bits::complete::take as take_bits;
use nom::bytes::complete::take as take_bytes;
use nom::error::Error;
use nom::IResult;

pub(crate) fn entity_capabilities(input: &[u8]) -> IResult<&[u8], EntityCapabilities> {
    let (input, (ammunition_supply, fuel_supply, recovery, repair, _pad_out)): (
        &[u8],
        (u8, u8, u8, u8, u8),
    ) = bits::<_, _, Error<(&[u8], usize)>, _, _>((
        take_bits(1usize),
        take_bits(1usize),
        take_bits(1usize),
        take_bits(1usize),
        take_bits(3usize),
    ))(input)?;
    let (input, _pad_3_bytes) = take_bytes(3usize)(input)?;

    Ok((
        input,
        EntityCapabilities {
            ammunition_supply: ammunition_supply != 0,
            fuel_supply: fuel_supply != 0,
            recovery: recovery != 0,
            repair: repair != 0,
        },
    ))
}