Enum rust_htslib::bam::record::Aux[][src]

pub enum Aux<'a> {
Show variants Char(u8), I8(i8), U8(u8), I16(i16), U16(u16), I32(i32), U32(u32), Float(f32), Double(f64), String(&'a str), HexByteArray(&'a str), ArrayI8(AuxArray<'a, i8>), ArrayU8(AuxArray<'a, u8>), ArrayI16(AuxArray<'a, i16>), ArrayU16(AuxArray<'a, u16>), ArrayI32(AuxArray<'a, i32>), ArrayU32(AuxArray<'a, u32>), ArrayFloat(AuxArray<'a, f32>),
}
Expand description

Auxiliary record data

The specification allows a wide range of types to be stored as an auxiliary data field of a BAM record.

Please note that the Aux::Double variant is not part of the specification, but it is supported by htslib.

Examples

use rust_htslib::{
    bam,
    bam::record::{Aux, AuxArray},
    errors::Error,
};

//Set up BAM record
let bam_header = bam::Header::new();
let mut record = bam::Record::from_sam(
    &mut bam::HeaderView::from_header(&bam_header),
    "ali1\t4\t*\t0\t0\t*\t*\t0\t0\tACGT\tFFFF".as_bytes(),
)
.unwrap();

// Add an integer field
let aux_integer_field = Aux::I32(1234);
record.push_aux(b"XI", aux_integer_field).unwrap();

match record.aux(b"XI") {
    Ok(value) => {
        // Typically, callers expect an aux field to be of a certain type.
        // If that's not the case, the value can be `match`ed exhaustively.
        if let Aux::I32(v) = value {
            assert_eq!(v, 1234);
        }
    }
    Err(e) => {
        panic!("Error reading aux field: {}", e);
    }
}

// Add an array field
let array_like_data = vec![0.4, 0.3, 0.2, 0.1];
let slice_of_data = &array_like_data;
let aux_array: AuxArray<f32> = slice_of_data.into();
let aux_array_field = Aux::ArrayFloat(aux_array);
record.push_aux(b"XA", aux_array_field).unwrap();

if let Ok(Aux::ArrayFloat(array)) = record.aux(b"XA") {
    let read_array = array.iter().collect::<Vec<_>>();
    assert_eq!(read_array, array_like_data);
} else {
    panic!("Could not read array data");
}

Variants

Char(u8)
I8(i8)
U8(u8)
I16(i16)
U16(u16)
I32(i32)
U32(u32)
Float(f32)
Double(f64)
String(&'a str)
HexByteArray(&'a str)
ArrayI8(AuxArray<'a, i8>)
ArrayU8(AuxArray<'a, u8>)
ArrayI16(AuxArray<'a, i16>)
ArrayU16(AuxArray<'a, u16>)
ArrayI32(AuxArray<'a, i32>)
ArrayU32(AuxArray<'a, u32>)
ArrayFloat(AuxArray<'a, f32>)

Trait Implementations

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.