use super::encoder;
use super::encoder_trait::Encoder;
use super::estr::EStr;
#[cfg(test)]
use super::split::Split;
pub(crate) trait PathEncoder: Encoder + sealed::Sealed {}
mod sealed {
pub(crate) trait Sealed {}
impl Sealed for super::encoder::IPath {}
}
impl PathEncoder for encoder::IPath {}
impl<E: PathEncoder> EStr<E> {
#[inline]
#[must_use]
pub(crate) fn is_absolute(&self) -> bool {
self.as_str().starts_with('/')
}
#[inline]
#[must_use]
pub(crate) fn is_rootless(&self) -> bool {
!self.as_str().starts_with('/')
}
#[inline]
#[must_use]
#[cfg(test)]
pub(crate) fn segments_if_absolute(&self) -> Option<Split<'_, E>> {
self.as_str()
.strip_prefix('/')
.map(|s| Self::new_validated(s).split('/'))
}
}