pub struct Reader<T>(/* private fields */)
where
T: BufRead;Expand description
A chain file reader.
Implementations§
Source§impl<T> Reader<T>where
T: BufRead,
impl<T> Reader<T>where
T: BufRead,
Sourcepub fn new(inner: T) -> Self
pub fn new(inner: T) -> Self
Creates a chain file reader.
§Examples
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let reader = chainfile::Reader::new(&data[..]);Sourcepub fn inner(&self) -> &T
pub fn inner(&self) -> &T
Gets a reference to the inner reader.
§Examples
use std::io;
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let cursor = io::Cursor::new(data);
let reader = chainfile::Reader::new(cursor);
assert_eq!(reader.inner().position(), 0);Sourcepub fn inner_mut(&mut self) -> &mut T
pub fn inner_mut(&mut self) -> &mut T
Gets a mutable reference to the inner reader.
§Examples
use std::io::Read;
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let mut reader = chainfile::Reader::new(&data[..]);
let mut buffer = vec![0; data.len()];
reader.inner_mut().read_exact(&mut buffer).unwrap();
assert_eq!(buffer, data[..]);Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consumes self and returns the inner reader.
§Examples
use std::io::BufRead;
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let reader = chainfile::Reader::new(&data[..]);
let mut lines = reader.into_inner().lines().map(|line| line.unwrap());
assert_eq!(
lines.next(),
Some(String::from("chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1"))
);
assert_eq!(lines.next(), Some(String::from("3\t0\t1")));
assert_eq!(lines.next(), Some(String::from("1")));
assert_eq!(lines.next(), None);Sourcepub fn read_line_raw(&mut self, buffer: &mut String) -> Result<usize>
pub fn read_line_raw(&mut self, buffer: &mut String) -> Result<usize>
Reads a raw, textual line from the underlying reader.
§Examples
use std::io;
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let mut reader = chainfile::Reader::new(&data[..]);
let mut buffer = String::new();
assert_eq!(reader.read_line_raw(&mut buffer)?, 36);
assert_eq!(buffer, "chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1");
assert_eq!(reader.read_line_raw(&mut buffer)?, 6);
assert_eq!(buffer, "3\t0\t1");
assert_eq!(reader.read_line_raw(&mut buffer)?, 1);
assert_eq!(buffer, "1");
assert_eq!(reader.read_line_raw(&mut buffer)?, 0);
Sourcepub fn read_line(&mut self, buffer: &mut String) -> Result<Option<Line>, Error>
pub fn read_line(&mut self, buffer: &mut String) -> Result<Option<Line>, Error>
Attempts to read a Line from the underlying reader.
§Examples
use std::io;
use chainfile::Line;
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let mut reader = chainfile::Reader::new(&data[..]);
let mut buffer = String::new();
assert!(matches!(
reader.read_line(&mut buffer)?,
Some(Line::Header(_))
));
assert!(matches!(
reader.read_line(&mut buffer)?,
Some(Line::AlignmentData(_))
));
assert!(matches!(
reader.read_line(&mut buffer)?,
Some(Line::AlignmentData(_))
));
assert!(matches!(reader.read_line(&mut buffer)?, None));
Sourcepub fn lines(&mut self) -> impl Iterator<Item = Result<Line>> + '_
pub fn lines(&mut self) -> impl Iterator<Item = Result<Line>> + '_
Returns an iterator over the Lines in the underlying reader.
§Examples
use std::io::BufRead;
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let mut reader = chainfile::Reader::new(&data[..]);
let lines = reader.lines().collect::<Vec<_>>();
assert_eq!(lines.len(), 3);
Sourcepub fn sections(&mut self) -> Sections<'_, T> ⓘ
pub fn sections(&mut self) -> Sections<'_, T> ⓘ
Returns an iterator over the alignment sections in the underlying reader.
§Examples
let data = b"chain 0 seq0 4 + 0 4 seq0 5 - 0 5 1\n3\t0\t1\n1";
let mut reader = chainfile::Reader::new(&data[..]);
let sections = reader
.sections()
.map(|result| result.unwrap())
.collect::<Vec<_>>();
assert_eq!(sections.len(), 1);
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for Reader<T>where
T: Freeze,
impl<T> RefUnwindSafe for Reader<T>where
T: RefUnwindSafe,
impl<T> Send for Reader<T>where
T: Send,
impl<T> Sync for Reader<T>where
T: Sync,
impl<T> Unpin for Reader<T>where
T: Unpin,
impl<T> UnsafeUnpin for Reader<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for Reader<T>where
T: 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