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 101 102 103
//! FASTA record and definition. pub mod definition; pub use self::definition::Definition; /// A FASTA record. #[derive(Clone, Debug, Eq, PartialEq)] pub struct Record { definition: Definition, sequence: Vec<u8>, } impl Record { /// Creates a FASTA record from a definition and sequence. /// /// # Examples /// /// ``` /// use noodles_fasta as fasta; /// let definition = fasta::record::Definition::new(String::from("sq0"), None); /// let sequence = b"ACGT".to_vec(); /// let record = fasta::Record::new(definition, sequence); /// ``` pub fn new(definition: Definition, sequence: Vec<u8>) -> Self { Self { definition, sequence, } } /// Returns the record definition. /// /// # Examples /// /// ``` /// use noodles_fasta as fasta; /// /// let definition = fasta::record::Definition::new(String::from("sq0"), None); /// let sequence = 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 reference sequence name. /// /// # Examples /// /// ``` /// use noodles_fasta as fasta; /// /// let definition = fasta::record::Definition::new(String::from("sq0"), None); /// let sequence = b"ACGT".to_vec(); /// let record = fasta::Record::new(definition, sequence); /// /// assert_eq!(record.reference_sequence_name(), "sq0"); /// ``` pub fn reference_sequence_name(&self) -> &str { self.definition.reference_sequence_name() } /// Returns the description. /// /// # Examples /// /// ``` /// use noodles_fasta as fasta; /// /// let definition = fasta::record::Definition::new( /// String::from("sq0"), /// Some(String::from("LN:4")) /// ); /// /// let sequence = b"ACGT".to_vec(); /// let record = fasta::Record::new(definition, sequence); /// /// assert_eq!(record.description(), Some("LN:4")); /// ``` pub fn description(&self) -> Option<&str> { self.definition.description() } /// Returns the sequence. /// /// # Examples /// /// ``` /// use noodles_fasta as fasta; /// /// let definition = fasta::record::Definition::new(String::from("sq0"), None); /// let sequence = b"ACGT".to_vec(); /// let record = fasta::Record::new(definition, sequence); /// /// assert_eq!(record.sequence(), b"ACGT"); /// ``` pub fn sequence(&self) -> &[u8] { &self.sequence } }