ratatui 0.27.0-alpha.5

A library that's all about cooking up terminal user interfaces
Documentation
[package]
name = "ratatui"
version = "0.27.0-alpha.5" # crate version
authors = ["Florian Dehau <work@fdehau.com>", "The Ratatui Developers"]
description = "A library that's all about cooking up terminal user interfaces"
documentation = "https://docs.rs/ratatui/latest/ratatui/"
keywords = ["tui", "terminal", "dashboard"]
repository = "https://github.com/ratatui-org/ratatui"
readme = "README.md"
license = "MIT"
exclude = [
  "assets/*",
  ".github",
  "Makefile.toml",
  "CONTRIBUTING.md",
  "*.log",
  "tags",
]
autoexamples = true
edition = "2021"
rust-version = "1.74.0"

[badges]

[dependencies]
crossterm = { version = "0.27", optional = true }
termion = { version = "3.0", optional = true }
termwiz = { version = "0.22.0", optional = true }

serde = { version = "1", optional = true, features = ["derive"] }
bitflags = "2.3"
cassowary = "0.3"
indoc = "2.0"
itertools = "0.12"
paste = "1.0.2"
strum = { version = "0.26", features = ["derive"] }
time = { version = "0.3.11", optional = true, features = ["local-offset"] }
unicode-segmentation = "1.10"
unicode-width = "0.1"
document-features = { version = "0.2.7", optional = true }
lru = "0.12.0"
stability = "0.2.0"
compact_str = "0.7.1"

[dev-dependencies]
anyhow = "1.0.71"
argh = "0.1.12"
better-panic = "0.3.0"
cargo-husky = { version = "1.5.0", default-features = false, features = [
  "user-hooks",
] }
color-eyre = "0.6.2"
criterion = { version = "0.5.1", features = ["html_reports"] }
derive_builder = "0.20.0"
fakeit = "1.1"
font8x8 = "0.3.1"
palette = "0.7.3"
pretty_assertions = "1.4.0"
rand = "0.8.5"
rand_chacha = "0.3.1"
rstest = "0.18.2"
serde_json = "1.0.109"

[lints.rust]
unsafe_code = "forbid"
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
wildcard_imports = "allow"

# nursery or restricted
as_underscore = "warn"
deref_by_slicing = "warn"
else_if_without_else = "warn"
empty_line_after_doc_comments = "warn"
equatable_if_let = "warn"
fn_to_numeric_cast_any = "warn"
format_push_string = "warn"
map_err_ignore = "warn"
missing_const_for_fn = "warn"
mixed_read_write_in_expression = "warn"
mod_module_files = "warn"
needless_raw_strings = "warn"
redundant_type_annotations = "warn"
rest_pat_in_fully_bound_structs = "warn"
string_lit_chars_any = "warn"
string_to_string = "warn"
use_self = "warn"

[features]
#! The crate provides a set of optional features that can be enabled in your `cargo.toml` file.
#!
## By default, we enable the crossterm backend as this is a reasonable choice for most applications
## as it is supported on Linux/Mac/Windows systems. We also enable the `underline-color` feature
## which allows you to set the underline color of text.
default = ["crossterm", "underline-color"]
#! Generally an application will only use one backend, so you should only enable one of the following features:
## enables the [`CrosstermBackend`] backend and adds a dependency on the [Crossterm crate].
crossterm = ["dep:crossterm"]
## enables the [`TermionBackend`] backend and adds a dependency on the [Termion crate].
termion = ["dep:termion"]
## enables the [`TermwizBackend`] backend and adds a dependency on the [Termwiz crate].
termwiz = ["dep:termwiz"]

#! The following optional features are available for all backends:
## enables serialization and deserialization of style and color types using the [Serde crate].
## This is useful if you want to save themes to a file.
serde = ["dep:serde", "bitflags/serde", "compact_str/serde"]

## enables the [`border!`] macro.
macros = []

## enables all widgets.
all-widgets = ["widget-calendar"]

#! Widgets that add dependencies are gated behind feature flags to prevent unused transitive
#! dependencies. The available features are:
## enables the [`calendar`] widget module and adds a dependency on the [Time crate].
widget-calendar = ["dep:time"]

#! Underline color is only supported by the [`CrosstermBackend`] backend, and is not supported
#! on Windows 7.
## enables the backend code that sets the underline color.
underline-color = ["dep:crossterm"]

#! The following features are unstable and may change in the future:

## Enable all unstable features.
unstable = ["unstable-rendered-line-info", "unstable-widget-ref"]

## Enables the [`Paragraph::line_count`](crate::widgets::Paragraph::line_count)
## [`Paragraph::line_width`](crate::widgets::Paragraph::line_width) methods
## which are experimental and may change in the future.
## See [Issue 293](https://github.com/ratatui-org/ratatui/issues/293) for more details.
unstable-rendered-line-info = []

## Enables the `WidgetRef` and `StatefulWidgetRef` traits which are experimental and may change in
## the future.
unstable-widget-ref = []

[package.metadata.docs.rs]
all-features = true
# see https://doc.rust-lang.org/nightly/rustdoc/scraped-examples.html
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
rustdoc-args = ["--cfg", "docsrs"]

[[bench]]
name = "barchart"
harness = false

[[bench]]
name = "block"
harness = false

[[bench]]
name = "list"
harness = false

[lib]
bench = false

[[bench]]
name = "paragraph"
harness = false

[[bench]]
name = "sparkline"
harness = false


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

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

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

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

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

[[example]]
name = "colors"
required-features = ["crossterm"]
# this example is a bit verbose, so we don't want to include it in the docs
doc-scrape-examples = false

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

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

[[example]]
name = "demo"
# this runs for all of the terminal backends, so it can't be built using --all-features or scraped
doc-scrape-examples = false

[[example]]
name = "demo2"
required-features = ["crossterm", "widget-calendar"]
doc-scrape-examples = true

[[example]]
name = "docsrs"
required-features = ["crossterm"]
doc-scrape-examples = false

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

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

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

[[example]]
name = "constraints"
required-features = ["crossterm"]
doc-scrape-examples = false

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

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

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

[[example]]
name = "modifiers"
required-features = ["crossterm"]
# this example is a bit verbose, so we don't want to include it in the docs
doc-scrape-examples = false

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

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

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

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

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

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

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

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

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

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

[[test]]
name = "state_serde"
required-features = ["serde"]