[package]
edition = "2021"
rust-version = "1.70"
name = "fncache"
version = "0.1.2"
authors = ["Lokesh Kumar <lkumar94@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A zero-boilerplate Rust library for function-level caching with pluggable backends"
readme = "README.md"
keywords = [
"cache",
"memoization",
"performance",
"macro",
]
categories = [
"caching",
"asynchronous",
"web-programming",
]
license = "MIT"
repository = "https://github.com/kumarlokesh/fncache"
[features]
bincode = ["dep:bincode"]
compile-time-keys = []
default = [
"memory",
"serde",
"bincode",
]
file-backend = [
"dep:serde",
"bincode",
"tempfile",
]
memory = [
"dashmap",
"tokio",
]
metrics = ["dep:metrics"]
redis-backend = [
"dep:redis",
"serde_json",
]
rocksdb-backend = [
"dep:rocksdb",
"bincode",
]
serde = ["dep:serde"]
test-utils = []
wasm = [
"wasm-bindgen",
"web-sys",
"js-sys",
"memory",
]
[lib]
name = "fncache"
path = "src/lib.rs"
proc-macro = false
[[example]]
name = "backend_file"
path = "examples/backend_file.rs"
required-features = ["file-backend"]
[[example]]
name = "backend_memory"
path = "examples/backend_memory.rs"
required-features = ["memory"]
[[example]]
name = "backend_redis"
path = "examples/backend_redis.rs"
required-features = ["redis-backend"]
[[example]]
name = "cache_invalidation"
path = "examples/cache_invalidation.rs"
required-features = ["memory"]
[[example]]
name = "error_handling"
path = "examples/error_handling.rs"
required-features = ["memory"]
[[example]]
name = "getting_started"
path = "examples/getting_started.rs"
required-features = ["memory"]
[[example]]
name = "key_derivation"
path = "examples/key_derivation.rs"
required-features = [
"memory",
"compile-time-keys",
]
[[example]]
name = "sync_vs_async_functions"
path = "examples/sync_vs_async_functions.rs"
required-features = ["memory"]
[[test]]
name = "basic_cache_safety_tests"
path = "tests/basic_cache_safety_tests.rs"
[[test]]
name = "cache_tests"
path = "tests/cache_tests.rs"
[[test]]
name = "eviction_tests"
path = "tests/eviction_tests.rs"
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
[[test]]
name = "key_derivation_tests"
path = "tests/key_derivation_tests.rs"
[[test]]
name = "thread_safe_eviction_test"
path = "tests/thread_safe_eviction_test.rs"
[[bench]]
name = "core_benchmarks"
path = "benches/core_benchmarks.rs"
harness = false
[[bench]]
name = "file_bench"
path = "benches/file_bench.rs"
harness = false
[[bench]]
name = "redis_bench"
path = "benches/redis_bench.rs"
harness = false
[[bench]]
name = "rocksdb_bench"
path = "benches/rocksdb_bench.rs"
harness = false
[dependencies.async-trait]
version = "0.1.72"
[dependencies.bincode]
version = "1.3.3"
optional = true
[dependencies.dashmap]
version = "5.5.0"
optional = true
[dependencies.fncache-macros]
version = "0.1.2"
[dependencies.futures]
version = "0.3.28"
[dependencies.js-sys]
version = "0.3"
optional = true
[dependencies.metrics]
version = "0.21.1"
optional = true
[dependencies.redis]
version = "0.23.3"
features = [
"tokio-comp",
"connection-manager",
]
optional = true
[dependencies.rocksdb]
version = "0.21.0"
optional = true
[dependencies.serde]
version = "1.0.188"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1.0.107"
optional = true
[dependencies.tempfile]
version = "3.8.0"
optional = true
[dependencies.thiserror]
version = "1.0.50"
[dependencies.tokio]
version = "1.32.0"
features = [
"sync",
"rt-multi-thread",
"macros",
"rt",
"time",
]
optional = true
[dependencies.wasm-bindgen]
version = "0.2"
optional = true
[dependencies.web-sys]
version = "0.3"
features = [
"Storage",
"Window",
"console",
]
optional = true
[dev-dependencies.bincode]
version = "1.3.3"
[dev-dependencies.criterion]
version = "0.5"
features = [
"html_reports",
"async_futures",
]
[dev-dependencies.futures]
version = "0.3.28"
[dev-dependencies.rand]
version = "0.8"
[dev-dependencies.serde]
version = "1.0.188"
features = ["derive"]
[dev-dependencies.serial_test]
version = "2.0.0"
[dev-dependencies.tokio]
version = "1.32.0"
features = ["full"]
[dev-dependencies.wasm-bindgen-futures]
version = "0.4"
[dev-dependencies.wasm-bindgen-test]
version = "0.3"
[profile.bench]
opt-level = 3
debug = 2
[profile.dev]
opt-level = 0
debug = 2