noodles_vcf/variant/record/
reference_bases.rs1use std::{io, str};
2
3pub trait ReferenceBases {
5 fn is_empty(&self) -> bool;
7
8 fn len(&self) -> usize;
10
11 fn iter(&self) -> Box<dyn Iterator<Item = io::Result<u8>> + '_>;
13}
14
15impl ReferenceBases for &str {
16 fn is_empty(&self) -> bool {
17 str::is_empty(self)
18 }
19
20 fn len(&self) -> usize {
21 str::len(self)
22 }
23
24 fn iter(&self) -> Box<dyn Iterator<Item = io::Result<u8>> + '_> {
25 Box::new(self.as_bytes().iter().copied().map(Ok))
26 }
27}
28
29impl ReferenceBases for Box<dyn ReferenceBases + '_> {
30 fn is_empty(&self) -> bool {
31 (**self).is_empty()
32 }
33
34 fn len(&self) -> usize {
35 (**self).len()
36 }
37
38 fn iter(&self) -> Box<dyn Iterator<Item = io::Result<u8>> + '_> {
39 (**self).iter()
40 }
41}