segment_data

Function segment_data 

Source
pub fn segment_data<'a, I>() -> impl Parser<Input = I, Output = &'a [u8]> + 'a
where I: RangeStream<Item = u8, Range = &'a [u8]> + 'a, I::Error: ParseError<I::Item, I::Range, I::Position>,
Expand description

Parses out an entropy-encoded data section, including 0xFF padding.

use exifsd::*;
use combine::*;

let result = segment_data().parse(&[0x01, 0xFF, 0x00, 0x02, 0xFF, 0xFF, 0xD9][..]);

// Note that the marker `[0xFF, 0xD9]` is not consumed.
assert_eq!(result, Ok(((&[0x01, 0xFF, 0x00, 0x02, 0xFF][..]), &[0xFF, 0xD9][..])));

let result = segment_data().parse(&[0x01, 0xFF, 0x00, 0x02, 0xFF, 0xFF, 0x00][..]);

// Note that the marker `[0xFF, 0x00]` is not consumed because it follows the padding.
assert_eq!(result, Ok(((&[0x01, 0xFF, 0x00, 0x02, 0xFF][..]), &[0xFF, 0x00][..])));