Skip to content

Allow the use of regular expressions or strings wherever you need string comparison

License

Notifications You must be signed in to change notification settings

stevepryde/stringmatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crates.io docs.rs

Allow the use of regular expressions or strings wherever you need string comparison.

Examples

Using Generics / Monomorphization

This pattern is faster but generates more code, slightly larger binary.

If you don't have a preference, go with this option as the code is usually more convenient to write.

fn accept_needle<N>(needle: N) -> bool
where
    N: Needle,
{
    needle.is_match("Test")
}

And now all of the following will work:

accept_needle("Test");
accept_needle(String::from("Test"));
accept_needle(Regex::new("Test").unwrap());
accept_needle(Regex::new(r"^T.+t$").unwrap());

For string comparisons you can also use StringMatch which allows you to be more explicit about the comparison:

accept_needle(StringMatch::from("test").case_insensitive());
accept_needle(StringMatch::from("tes").partial());

By default StringMatch matches the whole string and is case sensitive (safety by default).

And finally there is the StringMatchable trait that is implemented for String and &str:

accept_needle("test".match_case_insensitive());
accept_needle("tes".match_partial());

Using Dynamic Dispatch

This pattern is slightly slower but generates less code, slightly smaller binary.

fn accept_needle(needle: &dyn Needle) -> bool
{
   needle.is_match("Test")
}

And now all of the following will work:

accept_needle(&"Test");
accept_needle(&String::from("Test"));
accept_needle(&Regex::new("Test").unwrap());
accept_needle(&Regex::new(r"^T.+t$").unwrap());
accept_needle(&StringMatch::from("test").case_insensitive());
accept_needle(&StringMatch::from("tes").partial());

LICENSE

This work is licensed under MIT.

SPDX-License-Identifier: MIT

About

Allow the use of regular expressions or strings wherever you need string comparison

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages