mod bytes;
mod maybe;
mod prefix;
mod span;
mod string;
mod traits;
pub(crate) mod pattern;
pub use self::bytes::Bytes;
pub use self::maybe::MaybeString;
pub use self::pattern::Pattern;
pub use self::span::Span;
pub use self::string::String;
pub use self::traits::Input;
pub(crate) use self::prefix::Prefix;
pub(crate) use self::traits::{BytesLength, IntoInput, Private, PrivateExt};
#[inline(always)]
pub fn input<'i, I>(input: I) -> I::Input
where
I: IntoInput<'i>,
{
input.into_input()
}
#[must_use]
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum Bound {
None,
Start,
StartEnd,
}
impl Bound {
#[inline(always)]
pub(crate) fn force_close() -> Self {
Bound::StartEnd
}
#[inline(always)]
pub(crate) fn open_end(self) -> Self {
match self {
Bound::StartEnd | Bound::Start => Bound::Start,
Bound::None => Bound::None,
}
}
#[inline(always)]
pub(crate) fn close_end(self) -> Self {
let _ = self;
Bound::force_close()
}
#[inline(always)]
pub(crate) fn for_end(self) -> Self {
match self {
Bound::StartEnd => Bound::StartEnd,
Bound::Start | Bound::None => Bound::None,
}
}
}