rtb-credentials 0.6.3

OS keychain credential storage. Part of the phpboyscout Rust toolkit.
Documentation
[package]
name = "rtb-credentials"
description = "OS keychain credential storage. Part of the phpboyscout Rust toolkit."
version = "0.6.3"
edition = "2021"
rust-version = "1.82"
license = "MIT"
authors = ["Matt Cockayne <matt@phpboyscout.com>"]
repository = "https://gitlab.com/phpboyscout/rust/credentials"
homepage = "https://credentials.rust.phpboyscout.uk"
documentation = "https://docs.rs/rtb-credentials"
readme = "README.md"
categories = ["authentication", "os", "development-tools"]
keywords = ["credentials", "keychain", "keyring", "secrets", "security"]

[lints.rust]
# `deny` (not forbid) so test files can `#![allow]` when they genuinely
# need it; `src/lib.rs` ships `#![forbid(unsafe_code)]` — that is the
# production guarantee.
unsafe_code = "deny"
missing_docs = "warn"

[lints.clippy]
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
multiple_crate_versions = "allow"

[features]
default = []
# Opt-in Linux persistence via freedesktop Secret Service (D-Bus).
# Pulls in `libdbus-sys`, which at build time requires `pkg-config` and
# `libdbus-1-dev` on the host. Without this feature the Linux backend is
# the pure-Rust kernel keyutils (`linux-native`), which is session-scoped.
linux-persistent = ["keyring/dbus-secret-service-keyring-store"]

[dependencies]
keyring = { version = "4.1.5", default-features = false, features = ["v1", "apple-native-keyring-store", "windows-native-keyring-store", "linux-keyutils-keyring-store"] }
secrecy = { version = "0.10.3", features = ["serde"] }
async-trait = "0.1.91"
thiserror = "2.0.19"
miette = { version = "7.6.0", features = ["fancy"] }
tokio = { version = "1.53.0", features = ["full"] }
serde = { version = "1.0.229", features = ["derive"] }

[dev-dependencies]
cucumber = { version = "0.23.0", features = ["macros"] }