pub use crate::core::PatternLocation;
pub trait PatternIndex: Sized {
type Option;
fn new(
concatenated_sequence_with_boundaries: ConcatenatedSequenceWithBoundaries,
option: Self::Option,
) -> Result<Self, PatternIndexBuildError>;
fn locate(&self, pattern: &[u8], search_range: &Vec<u32>) -> Vec<PatternLocation>;
}
pub struct ConcatenatedSequenceWithBoundaries {
pub concatenated_sequence: Vec<u8>,
pub boundaries: Vec<u64>,
}
use thiserror::Error;
#[derive(Debug, Error)]
pub enum PatternIndexBuildError {
#[error("Sequence length is over the maximum capacity {0}")]
SequenceLengthOver(u64),
#[error("Unsupported sequence types: {0}")]
UnsupportedSequenceType(String),
#[error("Pattern index can make index of {max} characters, input is {input}")]
OverMaximumCharacters{
max: u32, input: u32, },
#[error("Error in option: {0}")]
InvalidOption(String), }
pub mod lfi;
mod utils;