# Rosie Rust Interface Overview This crate implements a high-level interface to the [**Rosie**](https://rosie-lang.org/about/) matching engine for the [**Rosie Pattern Language**](https://gitlab.com/rosie-pattern-language/rosie/-/blob/master/README.md)\(`rpl`\). Complete reference documentation for `rpl` is [here](https://gitlab.com/rosie-pattern-language/rosie/-/blob/master/doc/rpl.md), and additional examples can be found [here](https://gitlab.com/rosie-pattern-language/rosie/-/blob/master/extra/examples/README.md). ## In Cargo.toml To build Rosie as part of your project, add the following line to your Cargo.toml `[dependencies]` section: `rosie = { features = ["build_static_librosie"] }` To build Rosie to link against a shared librosie, already installed on the system, add the following line instead: `rosie = { features = ["link_shared_librosie"] }` ## Deployment Rosie depends on a `rosie_home` directory, containing support files including the Standard Pattern Library. See the `Installation & Deployment` section of the [rosie_sys] crate's `README` for deployment instructions. ## Usage There are 3 levels of depth at which you may access Rosie. ### High-Level: With `Rosie::match_str()` Just one-line to check for a match ```rust use rosie::*; if Rosie::match_str("{ [H][^]* }", "Hello, Rosie!") { println!("It Matches!"); } ``` Or to get the matched substring ```rust use rosie::*; let result : MatchResult = Rosie::match_str("date.any", "Nov 5, 1955! That was the day"); println!("Matched Substring = {}", result.matched_str()); assert_eq!(result.matched_str(), "Nov 5, 1955"); ``` ### Mid-Level: With compiled Patterns Explicit compilation reduces overhead because you can manage compiled patterns yourself, dropping the patterns you don't need and avoiding unnecessary recompilation. ```rust use rosie::*; let date_pat = Rosie::compile("date.us_long").unwrap(); let result : MatchResult = date_pat.match_str("Saturday, Nov 5, 1955").unwrap(); println!("did_match = {}", result.did_match()); println!("matched_str = {}", result.matched_str()); ``` ### Low-Level: With a RosieEngine See [engine] for details.