/// Marks branch as impossible, UB if taken in prod, panics in debug /// /// This function should never be used lightly, it will cause UB if used wrong #[inline] #[allow(unused_variables)] pub(crate) unsafefn never(s: &str) -> ! { #[cfg(debug_assertions)]
panic!("{}", s);
let len = (s.len() as usize).saturating_sub(to.into());
shift_unchecked(s.array.as_mut_slice(), from.into(), to.into(), len);
}
/// Returns error if size is outside of specified boundary #[inline] pubfn is_inside_boundary<S, L>(size: S, limit: L) -> Result<(), OutOfBounds> where
S: Into<usize>,
L: Into<usize>,
{ let (s, l) = (size.into(), limit.into());
trace!("Out of bounds: ensures {} < {}", s, l);
Some(()).filter(|_| s <= l).ok_or(OutOfBounds)
}
/// Returns error if index is not at a valid utf-8 char boundary #[inline] pubfn is_char_boundary<S: Capacity>(s: &ArrayString<S>, idx: u8) -> Result<(), Utf8> {
trace!("Is char boundary: {} at {}", s.as_str(), idx); if s.as_str().is_char_boundary(idx.into()) { return Ok(());
}
Err(Utf8)
}
/// Truncates string to specified size (ignoring last bytes if they form a partial `char`) #[inline] pub(crate) fn truncate_str(slice: &str, size: u8) -> &str {
trace!("Truncate str: {} at {}", slice, size); if slice.is_char_boundary(size.into()) { unsafe { slice.get_unchecked(..size.into()) }
} elseif (size as usize) < slice.len() { letmut index = size.saturating_sub(1) as usize; while !slice.is_char_boundary(index) {
index = index.saturating_sub(1);
} unsafe { slice.get_unchecked(..index) }
} else {
slice
}
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.52Bemerkung:
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.