keybinds2 0.2.0

Platform&Framework-agnostic key binding (keyboard shortcut) dispatcher, parser, and generator written in Safe Rust.
[package]
name = "keybinds2"
version = "0.2.0"
edition = "2021"
authors = ["rhysd <lin90162@yahoo.co.jp>", "vincent-uden <vincentuden@gmail.com>"]
description = "Platform&Framework-agnostic key binding (keyboard shortcut) dispatcher, parser, and generator written in Safe Rust."
license = "MIT"
homepage = "https://github.com/vincent-uden/keybinds-rs#readme"
documentation = "https://docs.rs/keybinds-iced-0-14"
repository = "https://github.com/vincent-uden/keybinds-rs"
keywords = ["key", "bindings", "configuration", "shortcut", "keyboard"]
categories = ["config", "gui"]
include = [
    "/src",
    "/examples",
    "/doc",
    "/LICENSE.txt",
    "/README.md",
    "/CHANGELOG.md",
]
# 1.80 is necessary for using `std::str::trim_ascii`.
rust-version = "1.80.0"

[[example]]
name = "minimal"
doc-scrape-examples = true

[[example]]
name = "deserialize"
required-features = ["serde"]
doc-scrape-examples = true

[[example]]
name = "serialize"
required-features = ["serde"]
doc-scrape-examples = true

[[example]]
name = "arbitrary"
required-features = ["arbitrary"]
doc-scrape-examples = true

[[example]]
name = "crossterm"
required-features = ["crossterm", "serde"]
doc-scrape-examples = true

[[example]]
name = "termwiz"
required-features = ["termwiz"]
doc-scrape-examples = true

[[example]]
name = "winit"
required-features = ["winit"]
doc-scrape-examples = true

[[example]]
name = "iced"
required-features = ["iced"]
doc-scrape-examples = true

[[example]]
name = "vim"
required-features = ["crossterm"]
doc-scrape-examples = true

[features]
# No feature is enabled by default. See `minimal` example to know how to use this crate with no specific framework
# dependency.
default = []
# Deserialization/Serialization support using serde crate.
# This feature is useful to parse/generate key bindings in configuration files with human-friendly formats such
# as TOML or YAML. See `deserialize` and `serialize` examples for the usage.
serde = ["dep:serde", "smallvec/serde"]
# Support for crossterm crate. This feature provides the conversion from crossterm's key event types into keybinds'
# key input types. See `crossterm` example for the usage.
crossterm = ["dep:crossterm"]
# Support for winit crate. This feature provides the conversion from winit's key event types into keybinds'
# key input types. See `winit` example for the usage.
winit = ["dep:winit"]
# Support for termwiz crate. This feature provides the conversion from termwiz's key event types into keybinds'
# key input types. See `termwiz` example for the usage.
termwiz = ["dep:termwiz"]
# Support for iced crate. This feature provides the conversion from iced's key event types into keybinds' key input
# types. See `iced` example for the usage.
iced = ["dep:iced"]
# Support for structure-aware fuzzing using arbitrary crate. This allows generating values of several keybinds' types
# from random byte slices. See `arbitrary` example for the usage.
arbitrary = ["dep:arbitrary"]

# TODO: Consider `default-features = false` for optional crates to reduce the number of dependencies
[dependencies]
arbitrary = { version = "1.4.1", features = ["derive"], optional = true }
bitflags = "2.9.1"
crossterm = { version = "0.29.0", optional = true }
iced = { version = "0.14.0", optional = true }
serde = { version = "1.0.219", optional = true }
smallvec = { version = "1.15.0", features = ["const_generics", "union"] }
termwiz = { version = "0.23.3", optional = true }
winit = { version = "0.30.11", optional = true }

[dev-dependencies]
toml = { version = "0.8.22", default-features = false, features = ["parse", "display"] }
serde = { version = "1.0.219", features = ["derive"] }
tui-textarea = "0.7.0"
ratatui = "0.29.0"

[workspace]
members = [".", "bench", "fuzz"]

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu", "aarch64-apple-darwin", "x86_64-pc-windows-msvc"]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]