Struct noodles_cram::io::writer::Writer

source ·
pub struct Writer<W>
where W: Write,
{ /* private fields */ }
Expand description

A CRAM writer.

A call to Self::try_finish must be made before the writer is dropped.

§Examples

use noodles_cram as cram;
use noodles_sam as sam;

let mut writer = cram::io::Writer::new(Vec::new());

let header = sam::Header::default();
writer.write_header(&header)?;

let record = cram::Record::default();
writer.write_record(&header, record)?;

writer.try_finish(&header)?;

Implementations§

source§

impl<W> Writer<W>
where W: Write,

source

pub fn new(inner: W) -> Self

Creates a new CRAM writer with default options.

§Examples
use noodles_cram as cram;
let writer = cram::io::Writer::new(Vec::new());
source

pub fn get_ref(&self) -> &W

Returns a reference to the underlying writer.

§Examples
use noodles_cram as cram;
let writer = cram::io::Writer::new(Vec::new());
assert!(writer.get_ref().is_empty());
source

pub fn try_finish(&mut self, header: &Header) -> Result<()>

Attempts to finish the output stream by writing any pending containers and a final EOF container.

This is typically only manually called if the underlying stream is needed before the writer is dropped.

§Examples
use noodles_cram as cram;
use noodles_sam as sam;

let header = sam::Header::default();
let mut writer = cram::io::Writer::new(Vec::new());
writer.try_finish(&header)?;
source

pub 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::io::Writer::new(Vec::new());
writer.write_file_definition()?;

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,
]);
source

pub 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;

let mut writer = cram::io::Writer::new(Vec::new());
writer.write_file_definition()?;

let header = sam::Header::default();
writer.write_file_header(&header)?;

writer.try_finish(&header)?;
source

pub fn write_header(&mut self, header: &Header) -> Result<()>

Writes a SAM header.

This writes the CRAM magic number, the file definition, and file header using the given SAM header.

use noodles_cram as cram;
use noodles_sam as sam;

let mut writer = cram::io::Writer::new(io::sink());

let header = sam::Header::builder().add_comment("noodles-cram").build();
writer.write_header(&header)?;
source

pub fn write_record(&mut self, header: &Header, record: Record) -> Result<()>

Writes a CRAM record.

§Examples
use noodles_cram as cram;
use noodles_sam as sam;

let mut writer = cram::io::Writer::new(Vec::new());

let header = sam::Header::default();
writer.write_header(&header)?;

let record = cram::Record::default();
writer.write_record(&header, record)?;

writer.try_finish(&header)?;

Trait Implementations§

source§

impl<W> Debug for Writer<W>
where W: Write + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<W> Write for Writer<W>
where W: Write,

source§

fn write_alignment_header(&mut self, header: &Header) -> Result<()>

Writes a SAM header.
source§

fn write_alignment_record( &mut self, header: &Header, record: &dyn Record ) -> Result<()>

Writes an alignment record.
source§

fn finish(&mut self, header: &Header) -> Result<()>

Shuts down an alignment writer.

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.