[−][src]Function str_concat::concat
pub unsafe fn concat<'a>(a: &'a str, b: &'a str) -> Result<&'a str, Error>
Concatenate two string slices if they are adjacent.
If two strs are adjacent to each other in memory, this function concatenates both, creating a single str.
Errors
Returns Err
if the two slices aren't adjacent, a
is after b
, or if
a
is too long for proper concatenation (longer than isize::MAX
).
Safety
The provided slices must come from the same underlying allocation. The adjacency test can not reliably differentiate between the one-past-the-end pointer of one allocation and the start of another. However, all slices must be within a single allocation.
Examples
Correct usage:
let s = "0123456789"; unsafe { // SAFETY: slices from the same str originally. assert_eq!("0123456", concat(&s[..5], &s[5..7]).unwrap()); }
Non-adjacent string slices:
let s = "0123456789"; unsafe { // SAFETY: slices from the same str originally. assert_eq!(Err(Error::NotAdjacent), concat(&s[..5], &s[6..7])) }