# https://doc.rust-lang.org/cargo/reference/workspaces.html [workspace] resolver = "2" members = [".", "examples/*", "fuzz"] [workspace.package] version = "0.7.0" authors = ["Cathal Mullan "] edition = "2021" rust-version = "1.66" repository = "https://github.com/DuskSystems/wayfind" license = "MIT OR Apache-2.0" keywords = ["router"] categories = ["network-programming", "web-programming"] # https://doc.rust-lang.org/rustc/lints/groups.html [workspace.lints.rust] unsafe_code = "forbid" unused = { level = "deny", priority = -2 } future-incompatible = { level = "deny", priority = -1 } keyword-idents = { level = "deny", priority = -1 } let-underscore = { level = "deny", priority = -1 } nonstandard-style = { level = "deny", priority = -1 } refining-impl-trait = { level = "deny", priority = -1 } rust-2018-compatibility = { level = "deny", priority = -1 } rust-2018-idioms = { level = "deny", priority = -1 } rust-2021-compatibility = { level = "deny", priority = -1 } # https://rust-lang.github.io/rust-clippy/master/index.html [workspace.lints.clippy] cargo = { level = "deny", priority = -1 } complexity = { level = "deny", priority = -1 } correctness = { level = "deny", priority = -1 } nursery = { level = "deny", priority = -1 } pedantic = { level = "deny", priority = -1 } perf = { level = "deny", priority = -1 } style = { level = "deny", priority = -1 } suspicious = { level = "deny", priority = -1 } # Personal Preferences module_name_repetitions = "allow" cognitive_complexity = "allow" too_many_lines = "allow" [profile.dev.package] insta.opt-level = 3 similar.opt-level = 3 [profile.profiling] inherits = "release" debug = true # https://doc.rust-lang.org/cargo/reference/manifest.html [package] name = "wayfind" description = "A speedy, flexible router." include = [ "/benches", "/examples", "/fuzz", "/src", "/tests", "/CHANGELOG.md", "/LICENSE-APACHE", "/LICENSE-MIT", "/README.md", ] version.workspace = true authors.workspace = true edition.workspace = true rust-version.workspace = true repository.workspace = true license.workspace = true keywords.workspace = true categories.workspace = true [lints] workspace = true [dependencies] # Data Structures smallvec = { version = "1.13", features = ["const_generics", "union"] } rustc-hash = "2.0" [dev-dependencies] # Testing # NOTE: Keep in sync with `cargo-insta` Nix package. insta = "=1.41.1" similar-asserts = "1.6" # Encoding percent-encoding = "2.3" # Benchmarking divan = "0.1" criterion = { version = "0.5", features = ["html_reports"] } # NOTE: Keep in sync with `cargo-codspeed` Nix package. codspeed-criterion-compat = "=2.7.2" # Routers actix-router = "=0.5.3" matchit = "=0.8.5" ntex-router = "=0.5.3" path-tree = "=0.8.1" route-recognizer = "=0.3.1" routefinder = "=0.5.4" xitca-router = "=0.3.0" [[bench]] name = "gitlab_criterion" harness = false [[bench]] name = "gitlab_divan" harness = false [[bench]] name = "matchit_criterion" harness = false [[bench]] name = "matchit_divan" harness = false [[bench]] name = "path_tree_criterion" harness = false [[bench]] name = "path_tree_divan" harness = false