# ----------------------------------------------------------------------------- # HTTP Handle - A fast and lightweight Rust library for handling HTTP requests # and responses. # ----------------------------------------------------------------------------- [package] # General project metadata name = "http-handle" # The name of the library version = "0.0.2" # Initial version of the crate authors = ["HTTP Handle Contributors"] # Library contributors (auto-generated if not defined) edition = "2021" # Rust edition being used (2021 edition is the latest stable) rust-version = "1.56.0" # Minimum supported Rust version license = "MIT OR Apache-2.0" # Dual licensing strategy for MIT and Apache-2.0 description = """ A fast and lightweight Rust library for handling HTTP requests and responses. """ # Short library description homepage = "https://http-handle.com/" # Project's homepage URL documentation = "https://http-handle.com/documentation/index.html" # Documentation URL repository = "https://github.com/sebastienrousseau/http-handle" # Repository URL readme = "README.md" # Path to the README file build = "build.rs" # Path to the build script (optional if used) # ----------------------------------------------------------------------------- # Dependencies # ----------------------------------------------------------------------------- [dependencies] # Required dependencies for building and running the project. thiserror = "1.0" # Error handling library for defining custom errors anyhow = "1.0" # Error handling for context propagation serde = { version = "1.0", features = ["derive"] } # Serialization/deserialization with derive features serde_json = "1.0" # JSON support with Serde log = "0.4" # Logging facade for Rust env_logger = { version = "0.11", optional = true } # Optional logging with environment variable support # ----------------------------------------------------------------------------- # Library Configuration # ----------------------------------------------------------------------------- [lib] # Library-specific configurations. name = "http_handle" # Name of the library path = "src/lib.rs" # Path to the library’s main file # ----------------------------------------------------------------------------- # Build Dependencies # ----------------------------------------------------------------------------- [build-dependencies] # Dependencies for the build script, used for pre-compilation tasks. version_check = "0.9" # Ensures that a compatible Rust version is used # ----------------------------------------------------------------------------- # Development Dependencies # ----------------------------------------------------------------------------- [dev-dependencies] # Dependencies required for testing and development. tempfile = "3.13" # Temporary file creation for tests assert_fs = "1.1" # File system assertion library for tests predicates = "3.1" # Predicate assertions for test conditions criterion = "0.5" # Benchmarking library to test performance # ----------------------------------------------------------------------------- # Examples # ----------------------------------------------------------------------------- [[example]] # Example code demonstrating the library in use. name = "basic_server" # Name of the example path = "examples/basic_server.rs" # Path to the example file [[example]] # Example code demonstrating error handling. name = "error_example" # Name of the example path = "examples/error_example.rs" # Path to the example file [[example]] # Example code demonstrating the library as a library. name = "lib_example" # Name of the example path = "examples/lib_example.rs" # Path to the example file [[example]] # Example code demonstrating request handling. name = "request_example" # Name of the example path = "examples/request_example.rs" # Path to the example file [[example]] # Example code demonstrating response handling. name = "response_example" # Name of the example path = "examples/response_example.rs" # Path to the example file [[example]] # Example code demonstrating server handling. name = "server_example" # Name of the example path = "examples/server_example.rs" # Path to the example file # ----------------------------------------------------------------------------- # Criterion Benchmark # ----------------------------------------------------------------------------- [[bench]] # Benchmarking configuration for performance testing. name = "server_benchmark" # Name of the benchmark harness = false # Disable the default benchmark harness (used by Criterion) [profile.bench] # Profile used when running benchmarks. debug = true # Include debug symbols for better diagnostics # ----------------------------------------------------------------------------- # Features # ----------------------------------------------------------------------------- [features] # Optional features that can be enabled or disabled. default = [] # No default features enabled async = [] # Placeholder for future asynchronous feature support # ----------------------------------------------------------------------------- # Documentation Configuration # ----------------------------------------------------------------------------- [package.metadata.docs.rs] # Settings for building and hosting documentation on docs.rs. all-features = true # Build documentation with all features enabled rustdoc-args = ["--cfg", "docsrs"] # Arguments passed to `rustdoc` when building the documentation targets = ["x86_64-unknown-linux-gnu"] # Default target platform for the docs # ----------------------------------------------------------------------------- # Linting Configuration # ----------------------------------------------------------------------------- [lints.rust] # Linting rules for the project. ## Warnings missing_copy_implementations = "warn" # Warn if types can implement `Copy` but don’t missing_docs = "warn" # Warn if public items lack documentation unstable_features = "warn" # Warn on the usage of unstable features unused_extern_crates = "warn" # Warn about unused external crates unused_results = "warn" # Warn if a result type is unused (e.g., errors ignored) ## Allowances bare_trait_objects = "allow" # Allow bare trait objects (e.g., `Box`) elided_lifetimes_in_paths = "allow" # Allow lifetimes to be elided in paths non_camel_case_types = "allow" # Allow non-camel-case types non_upper_case_globals = "allow" # Allow non-uppercase global variables trivial_bounds = "allow" # Allow trivial bounds in trait definitions unsafe_code = "allow" # Allow the usage of unsafe code blocks ## Forbidden missing_debug_implementations = "forbid" # Forbid missing `Debug` implementations non_ascii_idents = "forbid" # Forbid non-ASCII identifiers unreachable_pub = "forbid" # Forbid unreachable `pub` items ## Denials dead_code = "deny" # Deny unused, dead code in the project deprecated_in_future = "deny" # Deny code that will be deprecated in the future ellipsis_inclusive_range_patterns = "deny" # Deny usage of inclusive ranges in match patterns (`...`) explicit_outlives_requirements = "deny" # Deny unnecessary lifetime outlives requirements future_incompatible = { level = "deny", priority = -1 } # Handle future compatibility issues keyword_idents = { level = "deny", priority = -1 } # Deny usage of keywords as identifiers macro_use_extern_crate = "deny" # Deny macro use of `extern crate` meta_variable_misuse = "deny" # Deny misuse of meta variables in macros missing_fragment_specifier = "deny" # Deny missing fragment specifiers in macros noop_method_call = "deny" # Deny method calls that have no effect rust_2018_idioms = { level = "deny", priority = -1 } # Enforce Rust 2018 idioms rust_2021_compatibility = { level = "deny", priority = -1 } # Enforce Rust 2021 compatibility single_use_lifetimes = "deny" # Deny lifetimes that are used only once trivial_casts = "deny" # Deny trivial casts (e.g., `as` when unnecessary) trivial_numeric_casts = "deny" # Deny trivial numeric casts (e.g., `i32` to `i64`) unused = { level = "deny", priority = -1 } # Deny unused code, variables, etc. unused_features = "deny" # Deny unused features unused_import_braces = "deny" # Deny unnecessary braces around imports unused_labels = "deny" # Deny unused labels in loops unused_lifetimes = "deny" # Deny unused lifetimes unused_macro_rules = "deny" # Deny unused macros unused_qualifications = "deny" # Deny unnecessary type qualifications variant_size_differences = "deny" # Deny enum variants with significant size differences # ----------------------------------------------------------------------------- # Clippy Configuration # ----------------------------------------------------------------------------- [package.metadata.clippy] # Clippy lint configuration for enhanced code analysis. warn-lints = [ "clippy::all", # Warn on all common Clippy lints "clippy::pedantic", # Enable pedantic lints for stricter checking "clippy::cargo", # Enable lints specific to cargo "clippy::nursery", # Enable lints from Clippy’s nursery (experimental) ] # ----------------------------------------------------------------------------- # Profiles # ----------------------------------------------------------------------------- [profile.dev] # Development profile configuration for fast builds and debugging. codegen-units = 256 # Increase codegen units for faster compilation debug = true # Enable debugging symbols debug-assertions = true # Enable debug assertions incremental = true # Enable incremental compilation lto = false # Disable link-time optimization for development opt-level = 0 # No optimizations in development overflow-checks = true # Enable overflow checks for arithmetic operations panic = 'unwind' # Enable unwinding for panics (useful in development) rpath = false # Disable rpath generation strip = false # Do not strip symbols in development builds [profile.release] # Release profile configuration for optimized builds. codegen-units = 1 # Reduce codegen units for better performance debug = false # Disable debug symbols in release builds debug-assertions = false # Disable debug assertions incremental = false # Disable incremental compilation for optimal binary size lto = true # Enable link-time optimization for smaller and faster binaries opt-level = "s" # Optimize for binary size overflow-checks = false # Disable overflow checks for performance panic = "abort" # Use abort on panic for minimal overhead rpath = false # Disable rpath generation strip = "symbols" # Strip symbols for smaller binary size [profile.test] # Test profile configuration for debugging and development. codegen-units = 256 # Increase codegen units for faster test builds debug = true # Enable debugging symbols for test builds debug-assertions = true # Enable debug assertions for tests incremental = true # Enable incremental compilation for tests lto = false # Disable link-time optimization during testing opt-level = 0 # No optimizations in test builds overflow-checks = true # Enable overflow checks for tests rpath = false # Disable rpath generation strip = false # Do not strip symbols in test builds