pub struct SeqDataReaderSeek<Format: SeqDataFormat> { /* private fields */ }
Expand description
Seq Data Reader with seek
Implementations§
Source§impl<Format: SeqDataFormat> SeqDataReaderSeek<Format>
impl<Format: SeqDataFormat> SeqDataReaderSeek<Format>
Sourcepub fn open<P: AsRef<Path>>(path: P) -> Result<(Self, Vec<u8>)>
pub fn open<P: AsRef<Path>>(path: P) -> Result<(Self, Vec<u8>)>
Open a new Seq Data seeker
Examples found in repository?
examples/run.rs (line 73)
38fn run_writer_reader<H: SeqDataFormat>(sdf_file: &Path) {
39 {
40 let header = vec![0x90; H::HEADER_SIZE];
41 let mut sdf = SeqDataWriter::<H>::create(&sdf_file, &header).unwrap();
42 sdf.append(DATA1).unwrap();
43 sdf.append(DATA2).unwrap();
44 sdf.append(DATA3).unwrap();
45 }
46
47 let mut pos = Vec::new();
48 {
49 let (mut sdf, _header) = SeqDataReader::<H>::open(&sdf_file).unwrap();
50 let (p1, r1) = sdf.next().unwrap().unwrap();
51 let (p2, r2) = sdf.next().unwrap().unwrap();
52 let (p3, r3) = sdf.next().unwrap().unwrap();
53
54 pos.push(p1);
55 pos.push(p2);
56 pos.push(p3);
57
58 assert_eq!(p1, 0);
59 assert_eq!(r1, DATA1);
60
61 assert_eq!(p2, 4 + DATA1.len() as u64);
62 assert_eq!(r2, DATA2);
63
64 assert_eq!(p3, 4 * 2 + DATA1.len() as u64 + DATA2.len() as u64);
65 assert_eq!(r3, DATA3);
66
67 if let Some(x) = sdf.next() {
68 panic!("more data than expected {:?}", x)
69 }
70 }
71
72 {
73 let (mut sdf, _header) = SeqDataReaderSeek::<H>::open(sdf_file).unwrap();
74 let r2 = sdf.next_at(pos[1]).unwrap();
75 assert_eq!(r2, DATA2);
76 let r1 = sdf.next_at(pos[0]).unwrap();
77 assert_eq!(r1, DATA1);
78 let r3 = sdf.next_at(pos[2]).unwrap();
79 assert_eq!(r3, DATA3);
80 }
81}
Sourcepub fn next(&mut self) -> Result<Vec<u8>>
pub fn next(&mut self) -> Result<Vec<u8>>
Return the next block along with the current offset if it exists, or None if reached the end of file.
Sourcepub fn next_at(&mut self, pos: u64) -> Result<Vec<u8>>
pub fn next_at(&mut self, pos: u64) -> Result<Vec<u8>>
Return the next block at the offset specified
Note that if the position specified is not a valid boundary, then arbitrary invalid stuff might be returns, or some Err related to reading data
Examples found in repository?
examples/run.rs (line 74)
38fn run_writer_reader<H: SeqDataFormat>(sdf_file: &Path) {
39 {
40 let header = vec![0x90; H::HEADER_SIZE];
41 let mut sdf = SeqDataWriter::<H>::create(&sdf_file, &header).unwrap();
42 sdf.append(DATA1).unwrap();
43 sdf.append(DATA2).unwrap();
44 sdf.append(DATA3).unwrap();
45 }
46
47 let mut pos = Vec::new();
48 {
49 let (mut sdf, _header) = SeqDataReader::<H>::open(&sdf_file).unwrap();
50 let (p1, r1) = sdf.next().unwrap().unwrap();
51 let (p2, r2) = sdf.next().unwrap().unwrap();
52 let (p3, r3) = sdf.next().unwrap().unwrap();
53
54 pos.push(p1);
55 pos.push(p2);
56 pos.push(p3);
57
58 assert_eq!(p1, 0);
59 assert_eq!(r1, DATA1);
60
61 assert_eq!(p2, 4 + DATA1.len() as u64);
62 assert_eq!(r2, DATA2);
63
64 assert_eq!(p3, 4 * 2 + DATA1.len() as u64 + DATA2.len() as u64);
65 assert_eq!(r3, DATA3);
66
67 if let Some(x) = sdf.next() {
68 panic!("more data than expected {:?}", x)
69 }
70 }
71
72 {
73 let (mut sdf, _header) = SeqDataReaderSeek::<H>::open(sdf_file).unwrap();
74 let r2 = sdf.next_at(pos[1]).unwrap();
75 assert_eq!(r2, DATA2);
76 let r1 = sdf.next_at(pos[0]).unwrap();
77 assert_eq!(r1, DATA1);
78 let r3 = sdf.next_at(pos[2]).unwrap();
79 assert_eq!(r3, DATA3);
80 }
81}
Auto Trait Implementations§
impl<Format> Freeze for SeqDataReaderSeek<Format>
impl<Format> RefUnwindSafe for SeqDataReaderSeek<Format>where
Format: RefUnwindSafe,
impl<Format> Send for SeqDataReaderSeek<Format>where
Format: Send,
impl<Format> Sync for SeqDataReaderSeek<Format>where
Format: Sync,
impl<Format> Unpin for SeqDataReaderSeek<Format>where
Format: Unpin,
impl<Format> UnwindSafe for SeqDataReaderSeek<Format>where
Format: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more