pub struct Writer<W> { /* private fields */ }
Expand description
An async CRAM writer.
A call to Self::shutdown
must be made before the writer is dropped.
Implementations§
source§impl<W> Writer<W>where
W: AsyncWrite + Unpin,
impl<W> Writer<W>where
W: AsyncWrite + Unpin,
sourcepub fn new(inner: W) -> Self
pub fn new(inner: W) -> Self
Creates an async CRAM writer.
§Examples
use noodles_cram as cram;
use tokio::io;
let writer = cram::r#async::io::Writer::new(io::sink());
sourcepub fn get_ref(&self) -> &W
pub fn get_ref(&self) -> &W
Returns a reference to the underlying writer.
§Examples
use noodles_cram as cram;
use tokio::io;
let writer = cram::r#async::io::Writer::new(io::sink());
let inner = writer.get_ref();
sourcepub async fn shutdown(&mut self, header: &Header) -> Result<()>
pub async fn shutdown(&mut self, header: &Header) -> Result<()>
Attempts to shutdown the output stream by writing any pending containers and a final EOF container.
§Examples
use noodles_cram as cram;
use noodles_sam as sam;
use tokio::io;
let mut writer = cram::r#async::io::Writer::new(io::sink());
let header = sam::Header::default();
writer.shutdown(&header).await?;
sourcepub async fn write_file_definition(&mut self) -> Result<()>
pub async fn write_file_definition(&mut self) -> Result<()>
Writes a CRAM file definition.
The file ID is set as a blank value ([0x00; 20]
).
§Examples
use noodles_cram as cram;
let mut writer = cram::r#async::io::Writer::new(Vec::new());
writer.write_file_definition().await?;
assert_eq!(writer.get_ref(), &[
// magic number (CRAM)
0x43, 0x52, 0x41, 0x4d,
// format (major, minor)
0x03, 0x00,
// file ID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
]);
sourcepub async fn write_file_header(&mut self, header: &Header) -> Result<()>
pub async fn write_file_header(&mut self, header: &Header) -> Result<()>
Writes a CRAM file header container.
The position of the stream is expected to be directly after the file definition.
Entries in the reference sequence dictionary that are missing MD5 checksums (M5
) will
automatically be calculated and added to the written record.
§Examples
use noodles_cram as cram;
use noodles_sam as sam;
use tokio::io;
let mut writer = cram::r#async::io::Writer::new(io::sink());
writer.write_file_definition().await?;
let header = sam::Header::default();
writer.write_file_header(&header).await?;
writer.shutdown(&header).await?;
sourcepub async fn write_record(
&mut self,
header: &Header,
record: Record
) -> Result<()>
pub async fn write_record( &mut self, header: &Header, record: Record ) -> Result<()>
Writes a CRAM record.
§Examples
use noodles_cram as cram;
use noodles_fasta as fasta;
use noodles_sam as sam;
use tokio::io;
let mut writer = cram::r#async::io::Writer::new(io::sink());
writer.write_file_definition().await?;
let header = sam::Header::default();
writer.write_file_header(&header).await?;
let record = cram::Record::default();
writer.write_record(&header, record).await?;
writer.shutdown(&header).await?;
Auto Trait Implementations§
impl<W> Freeze for Writer<W>where
W: Freeze,
impl<W> RefUnwindSafe for Writer<W>where
W: RefUnwindSafe,
impl<W> Send for Writer<W>where
W: Send,
impl<W> Sync for Writer<W>where
W: Sync,
impl<W> Unpin for Writer<W>where
W: Unpin,
impl<W> UnwindSafe for Writer<W>where
W: 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