1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
//! FASTA record and definition.
pub mod definition;
pub mod sequence;
pub use self::{definition::Definition, sequence::Sequence};
/// A FASTA record.
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Record {
definition: Definition,
sequence: Sequence,
}
impl Record {
/// Creates a FASTA record from a definition and sequence.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
/// ```
pub fn new(definition: Definition, sequence: Sequence) -> Self {
Self {
definition,
sequence,
}
}
/// Returns the record definition.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition.clone(), sequence);
///
/// assert_eq!(record.definition(), &definition);
/// ```
pub fn definition(&self) -> &Definition {
&self.definition
}
/// Returns the record name.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
///
/// assert_eq!(record.name(), b"sq0");
/// ```
pub fn name(&self) -> &[u8] {
self.definition.name()
}
/// Returns the description.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", Some(Vec::from("LN:4")));
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence);
///
/// assert_eq!(record.description(), Some(&b"LN:4"[..]));
/// ```
pub fn description(&self) -> Option<&[u8]> {
self.definition.description()
}
/// Returns the sequence.
///
/// # Examples
///
/// ```
/// use noodles_fasta::{self as fasta, record::{Definition, Sequence}};
///
/// let definition = Definition::new("sq0", None);
/// let sequence = Sequence::from(b"ACGT".to_vec());
/// let record = fasta::Record::new(definition, sequence.clone());
///
/// assert_eq!(record.sequence(), &sequence);
/// ```
pub fn sequence(&self) -> &Sequence {
&self.sequence
}
}