compact_genome/interface/
k_mer.rs1use crate::interface::alphabet::Alphabet;
4use crate::interface::sequence::{GenomeSequence, GenomeSequenceMut, OwnedGenomeSequence};
5
6pub trait Kmer<
9 const K: usize,
10 AlphabetType: Alphabet,
11 GenomeSubsequence: GenomeSequence<AlphabetType, GenomeSubsequence> + ?Sized,
12>: GenomeSequence<AlphabetType, GenomeSubsequence>
13{
14 fn k() -> usize {
16 K
17 }
18}
19
20pub trait OwnedKmer<
22 const K: usize,
23 AlphabetType: Alphabet,
24 GenomeSubsequence: GenomeSequence<AlphabetType, GenomeSubsequence> + ?Sized,
25>: OwnedGenomeSequence<AlphabetType, GenomeSubsequence>
26{
27 fn successor(&self, successor: AlphabetType::CharacterType) -> Self;
31}
32
33pub trait KmerMut<
35 AlphabetType: Alphabet,
36 GenomeSubsequenceMut: GenomeSequenceMut<AlphabetType, GenomeSubsequenceMut> + ?Sized,
37>: GenomeSequenceMut<AlphabetType, GenomeSubsequenceMut>
38{
39}