Skip to content

"bananas".contains("nana") returns false #16589

@nham

Description

@nham

Currently, "bananas".contains("nana") returns false. It is the only substring of "bananas" for which this is true:

fn main() {
    let b = "bananas";
    for i in range(0, b.len()) {
        for j in range(i, b.len() + 1) {
            let curr = b.slice(i, j);
            println!("{} - {}", b.contains(curr), curr);
        }
    }
}

results in:

true - 
true - b
true - ba
true - ban
true - bana
true - banan
true - banana
true - bananas
true - 
true - a
true - an
true - ana
true - anan
true - anana
true - ananas
true - 
true - n
true - na
true - nan
false - nana
true - nanas
true - 
true - a
true - an
true - ana
true - anas
true - 
true - n
true - na
true - nas
true - 
true - a
true - as
true - 
true - s

I've done some preliminary work tracking this down. The problem seems to be in core::str::TwoWaySearcher.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions