rmesg 1.0.19

This is a fully Rust-based implementation of the popular dmesg Linux utility, giving programmatic access to the kernel log buffer.
Documentation
[package]
name = "rmesg"
version = "1.0.19"
authors = ["Archis Gore <me@archisgore.com>"]
edition = "2018"
license = "Apache-2.0"
categories = ["os", "command-line-utilities"]
keywords = ["dmesg", "klogctl", "printk", "syslog"]
readme = "README.md"
repository = "https://github.com/archisgore/rmesg"
description = """This is a fully Rust-based implementation of the popular dmesg Linux utility, giving
 programmatic access to the kernel log buffer."""

[[bin]]
name = "rmesg"
path = "src/main.rs"
required-features = ["async"]

[lib]
name = "rmesg"
path = "src/lib.rs"

[features]
default = ["async"]
# The default set of optional packages. Most people will want to use these
# packages, but they are strictly optional. Note that `session` is not a package
# but rather another feature listed in this manifest.
sync = []
async = ["futures", "futures-util", "tokio", "pin-project"]
extra-traits = ["serde"]

[dependencies]
libc = "0.2.112"
cfg-if = "1.0.0"
enum-display-derive = "0.1.1"
errno = "0.2.8"
clap = "3.0.14"
lazy_static = "1.4.0"
regex = "1.5.4"
strum = "0.24.0"
strum_macros = "0.24.0"
num = "0.4.0"
num-traits = "0.2.14"
num-derive = "0.3.3"
nonblock = "0.1.0"

# Optional - on extra-traits
serde = { version = "1.0.132", features = ["derive"], optional = true }

# Optional - only enabled through the "async" feature
futures = { version = "0.3.19", optional = true }
futures-util = { version = "0.3.19", optional = true }
tokio = { version = "1.15.0", features = ["rt", "fs", "io-util", "macros", "time"], optional = true }
pin-project = {version = "1.0.8", optional = true }

[dev-dependencies]
tokio-stream = { version = "0.1.8" }
rand = "0.8.4"
criterion = { version = "0.3.5", features = ["async_tokio"]}

[profile.dev]
# We don't need stack unwinding in dev either - can be manually enabled
panic = 'abort'

[profile.release]
# We don't need stack unwinding in releases
panic = 'abort'
# Enable LTO for release (since it only builds in Travis and doesn't block day to day)
lto = "fat"
# One code-gen unit so we get a highly optimized binary
codegen-units = 1

[package.metadata.cargo-all-features]
skip_optional_dependencies = true

[[bench]]
name = "benchmark"
harness = false
required-features = ["sync", "async"]