#overlap #string #str #intersection

no-std str_overlap

Methods for finding the overlap between two string slices

7 unstable releases (3 breaking)

Uses old Rust 2015

0.4.3 Feb 4, 2021
0.4.2 Feb 4, 2021
0.4.1 Jan 31, 2021
0.3.0 Jan 28, 2021
0.1.1 Oct 17, 2020

#795 in Text processing

Download history 294/week @ 2022-12-08 197/week @ 2022-12-15 150/week @ 2022-12-22 108/week @ 2022-12-29 214/week @ 2023-01-05 220/week @ 2023-01-12 297/week @ 2023-01-19 218/week @ 2023-01-26 299/week @ 2023-02-02 128/week @ 2023-02-09 230/week @ 2023-02-16 203/week @ 2023-02-23 106/week @ 2023-03-02 154/week @ 2023-03-09 209/week @ 2023-03-16 139/week @ 2023-03-23

639 downloads per month
Used in 3 crates


127 lines


GitHub Workflow Status codecov.io Crates.io Docs.rs MSRV License

This crate provides methods for finding the overlap between two string slices.

An overlap is here defined as the largest substring contained both at the end of one string slice and the beginning of another string slice.


To use this crate, bring the Overlap trait into scope. This will provide strs with two methods:

  • overlap_start - Finds the overlap at the start of the string slice and the end of another.
  • overlap_end - Finds the overlap at the end of the string slice and the start of another.
use str_overlap::Overlap;

assert_eq!("bcd".overlap_start("abc"), "bc");
assert_eq!("abc".overlap_end("bcd"), "bc");

The return value of these methods is a string slice, borrowed from the string the method is called on. The two methods allows the caller to choose who owns the resulting string slice.

To use this crate, call the provided overlap function with two string slices in the left and right positions.

use str_overlap::overlap;

assert_eq!(overlap("abc", "bcd"), "bc");

Note that the positions of the string slices matter. The overlap found is the largest substring at both the end of the left string slice and the beginning of the right string slice.


The overlap function has temporal complexity O(n) in the worst case (where no overlap is found), where n is the length of the first string parameter.

Minimum Supported Rust Version

This crate is guaranteed to compile on stable rustc 1.0.0 and up.


This project is licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps