use crate::error::{Error, ErrorCode, Result};
#[cfg(not(miri))]
#[inline]
pub(crate) fn from_utf8(data: &[u8]) -> Result<&str> {
simdutf8::basic::from_utf8(data).or_else(|_| from_utf8_compat(data))
}
#[cfg(miri)]
pub(crate) fn from_utf8(data: &[u8]) -> Result<&str> {
std::str::from_utf8(data)
.map_err(|e| Error::syntax(ErrorCode::InvalidUTF8, data, e.valid_up_to()))
}
#[cfg(not(miri))]
#[cold]
fn from_utf8_compat(data: &[u8]) -> Result<&str> {
simdutf8::compat::from_utf8(data)
.map_err(|e| Error::syntax(ErrorCode::InvalidUTF8, data, e.valid_up_to()))
}