[][src]Function exifsd::segment_data

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

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][..])));