# Function memchr::memrchr2

source · [−]

    pub fn memrchr2(needle1: u8, needle2: u8, haystack: &[u8]) -> Option<usize>

Expand description

Like `memrchr`, but searches for either of two bytes instead of just one.

This returns the index corresponding to the last occurrence of `needle1` or the last occurrence of `needle2` in `haystack` (whichever occurs later), or `None` if neither one is found. If an index is returned, it is guaranteed to be less than `usize::MAX`.

While this is operationally the same as something like `haystack.iter().rposition(|&b| b == needle1 || b == needle2)`, `memrchr2` will use a highly optimized routine that can be up to an order of magnitude faster in some cases.

## Example

This shows how to find the last position of either of two bytes in a byte string.

    use memchr::memrchr2;

    let haystack = b"the quick brown fox";
    assert_eq!(memrchr2(b'k', b'q', haystack), Some(8));