use std::time::Duration;
use tastty::AbsolutePosition;
#[non_exhaustive]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct SearchMatch {
pub start: AbsolutePosition,
pub end: AbsolutePosition,
pub text: String,
pub captures: Vec<Capture>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Capture {
pub name: Option<String>,
pub index: usize,
pub start: AbsolutePosition,
pub end: AbsolutePosition,
pub text: String,
}
#[non_exhaustive]
#[derive(Debug, thiserror::Error)]
pub enum SearchError {
#[error("invalid regex pattern '{pattern}': {source}")]
InvalidRegex {
pattern: String,
#[source]
source: crate::InvalidRegexSource,
},
#[error("search pattern is empty")]
EmptyPattern,
#[error("search budget of {budget:?} exceeded after {elapsed:?}")]
DeadlineExceeded {
budget: Duration,
elapsed: Duration,
},
}