cot 0.5.0

The Rust web framework for lazy developers.
Documentation
[package]
name = "cot"
version = "0.5.0"
description = "The Rust web framework for lazy developers."
categories = ["web-programming", "web-programming::http-server", "network-programming"]
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
keywords.workspace = true
readme.workspace = true
authors.workspace = true

[lints]
workspace = true

[dependencies]
aide = { workspace = true, optional = true }
askama = { workspace = true, features = ["std"] }
async-trait.workspace = true
axum = { workspace = true, features = ["http1", "tokio"] }
backtrace.workspace = true
bytes.workspace = true
chrono = { workspace = true, features = ["alloc", "serde", "clock"] }
chrono-tz.workspace = true
chumsky = { workspace = true, optional = true }
clap.workspace = true
cot_macros.workspace = true
deadpool-redis = { workspace = true, features = ["tokio-comp", "rt_tokio_1"], optional = true }
derive_builder.workspace = true
derive_more = { workspace = true, features = ["debug", "deref", "display", "from"] }
digest.workspace = true
email_address.workspace = true
fake = { workspace = true, optional = true, features = ["derive", "chrono"] }
form_urlencoded.workspace = true
futures-core.workspace = true
futures-util.workspace = true
hex.workspace = true
hmac.workspace = true
http-body-util.workspace = true
http-body.workspace = true
http.workspace = true
humantime.workspace = true
idna = { workspace = true, optional = true }
indexmap.workspace = true
lettre = { workspace = true, features = ["builder", "sendmail-transport", "smtp-transport", "tokio1", "tokio1-rustls", "ring", "rustls-platform-verifier"], optional = true }
mime.workspace = true
mime_guess.workspace = true
multer.workspace = true
password-auth = { workspace = true, features = ["std", "argon2"] }
pin-project-lite.workspace = true
redis = { workspace = true, features = ["aio", "tokio-comp"], optional = true }
schemars = { workspace = true, optional = true }
sea-query = { workspace = true, optional = true }
sea-query-binder = { workspace = true, features = ["with-chrono", "runtime-tokio"], optional = true }
serde = { workspace = true, features = ["derive"] }
serde_html_form = { workspace = true }
serde_json = { workspace = true, optional = true }
serde_path_to_error = { workspace = true }
sha2.workspace = true
sqlx = { workspace = true, features = ["runtime-tokio", "chrono"], optional = true }
subtle = { workspace = true, features = ["std"] }
swagger-ui-redist = { workspace = true, optional = true }
sync_wrapper.workspace = true
thiserror.workspace = true
time.workspace = true
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "signal", "fs", "io-util"] }
toml = { workspace = true, features = ["parse", "serde"] }
tower = { workspace = true, features = ["util"] }
tower-livereload = { workspace = true, optional = true }
tower-sessions = { workspace = true, features = ["memory-store"] }
tracing.workspace = true
url = { workspace = true, features = ["serde"] }

[dev-dependencies]
async-stream.workspace = true
criterion = { workspace = true, features = ["async_tokio"] }
fake.workspace = true
fantoccini.workspace = true
futures.workspace = true
mockall.workspace = true
reqwest = { workspace = true, features = ["json"] }
rustversion.workspace = true
serde_urlencoded.workspace = true
tempfile.workspace = true
tracing-test.workspace = true
trybuild.workspace = true

[build-dependencies]
ahash.workspace = true
grass.workspace = true

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[package.metadata.cargo-machete]
ignored = [
    # Used indirectly by `grass`, but it doesn't work with the latest versions of Rust if minimal dependency versions
    # are used
    "ahash",
    # Used by `lettre`, but it causes dependency issues if minimal dependency versions are used
    "chumsky",
    # Used by `lettre`, but it causes dependency issues if minimal dependency versions are used
    "idna",
    # time requires version 0.3.35 to work with the latest versions of Rust, but we don't use it directly
    "time",
]

[features]
default = ["sqlite", "postgres", "mysql", "json"]
full = ["default", "fake", "live-reload", "test", "cache", "redis", "email"]
fake = ["dep:fake"]
db = ["dep:sea-query", "dep:sea-query-binder", "dep:sqlx"]
email = ["dep:lettre", "dep:chumsky", "dep:idna"]
sqlite = ["db", "sea-query/backend-sqlite", "sea-query-binder/sqlx-sqlite", "sqlx/sqlite"]
postgres = ["db", "sea-query/backend-postgres", "sea-query-binder/sqlx-postgres", "sqlx/postgres"]
mysql = ["db", "sea-query/backend-mysql", "sea-query-binder/sqlx-mysql", "sqlx/mysql"]
redis = ["cache", "dep:deadpool-redis", "dep:redis", "json"]
json = ["dep:serde_json"]
openapi = ["json", "dep:aide", "dep:schemars"]
swagger-ui = ["openapi", "dep:swagger-ui-redist"]
live-reload = ["dep:tower-livereload"]
cache = ["json"]
test = []

[lib]
bench = false

[[bench]]
name = "router"
harness = false
required-features = ["test"]