sigalign_core/reference/extensions/
label.rs1use super::{
2 Reference,
3 PatternIndex,
4 SequenceStorage,
5};
6
7impl<I, S> Reference<I, S> where
8 I: PatternIndex ,
9 S: SequenceStorage + LabelStorage,
10{
11 pub fn label_of_target(&self, target_index: u32) -> Option<String> {
12 if target_index < self.num_targets() {
13 Some(self.label_of_target_unchecked(target_index))
14 } else {
15 None
16 }
17 }
18 pub fn label_of_target_unchecked(&self, target_index: u32) -> String {
19 self.sequence_storage.label_of_target_unchecked(target_index)
20 }
21}
22
23impl<I, S> Reference<I, S> where
24 I: PatternIndex ,
25 S: SequenceStorage + LabelRefStorage,
26{
27 pub fn label_ref_of_target(&self, target_index: u32) -> Option<&str> {
28 if target_index < self.num_targets() {
29 Some(self.label_ref_of_target_unchecked(target_index))
30 } else {
31 None
32 }
33 }
34 pub fn label_ref_of_target_unchecked(&self, target_index: u32) -> &str {
35 self.sequence_storage.label_ref_of_target_unchecked(target_index)
36 }
37}
38
39pub trait LabelStorage {
41 fn label_of_target_unchecked(&self, target_index: u32) -> String;
42}
43pub trait LabelRefStorage {
45 fn label_ref_of_target_unchecked(&self, target_index: u32) -> &str;
46}