[package]
edition = "2024"
name = "proto_rs"
version = "0.11.12"
authors = ["Ivan Auwers <vonauwers@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust-first gRPC macros collection for .proto/protobufs managment and more"
homepage = "https://github.com/4r33x/proto_rs"
documentation = "https://docs.rs/proto_rs"
readme = "README.md"
keywords = [
"grpc",
"protobufs",
"proto",
"tonic",
"prost",
]
categories = [
"network-programming",
"development-tools",
"development-tools::build-utils",
"rust-patterns",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/4r33x/proto_rs"
[package.metadata.docs.rs]
all-features = true
[features]
ahash = ["dep:ahash"]
arc_swap = ["dep:arc-swap"]
block_razor = [
"dep:tokio-stream",
"tonic",
]
bloxroute = ["tonic"]
build-schemas = ["inventory"]
cache_padded = ["dep:crossbeam-utils"]
chrono = ["dep:chrono"]
default = ["tonic"]
emit-proto-files = ["prosto_derive/emit-proto-files"]
fastnum = ["dep:fastnum"]
jito = [
"dep:tokio-stream",
"tonic",
]
next_block = ["tonic"]
no-recursion-limit = []
papaya = ["dep:papaya"]
parking_lot = ["dep:parking_lot"]
solana = [
"dep:solana-address",
"dep:solana-instruction-error",
"dep:solana-keypair",
"dep:solana-signature",
"dep:solana-transaction-error",
]
solana_address_hash = [
"solana",
"solana-address/rand",
]
stable = ["prosto_derive/stable"]
std_legacy = []
teloxide = ["dep:teloxide-core"]
tonic = [
"dep:tonic",
"bytes/std",
"prosto_derive/tonic",
]
[lib]
name = "proto_rs"
path = "src/lib.rs"
[[example]]
name = "complex"
path = "examples/complex.rs"
[[example]]
name = "mutex_wrappers"
path = "examples/mutex_wrappers.rs"
[[example]]
name = "prosto_proto"
path = "examples/prosto_proto.rs"
[[example]]
name = "proto_gen_example"
path = "examples/proto_gen_example.rs"
[[example]]
name = "proto_import_all_from"
path = "examples/proto_import_all_from.rs"
[[example]]
name = "rpc_interceptor"
path = "examples/rpc_interceptor.rs"
[[test]]
name = "advanced_roundtrip"
path = "tests/advanced_roundtrip.rs"
[[test]]
name = "arc_swap_roundtrip"
path = "tests/arc_swap_roundtrip.rs"
[[test]]
name = "encoding_messages"
path = "tests/encoding_messages.rs"
[[test]]
name = "encoding_roundtrip"
path = "tests/encoding_roundtrip.rs"
[[test]]
name = "generic_message"
path = "tests/generic_message.rs"
[[test]]
name = "getter_reference"
path = "tests/getter_reference.rs"
[[test]]
name = "map_primitives"
path = "tests/map_primitives.rs"
[[test]]
name = "mutex_roundtrip"
path = "tests/mutex_roundtrip.rs"
[[test]]
name = "papaya_roundtrip"
path = "tests/papaya_roundtrip.rs"
[[test]]
name = "reference_sun"
path = "tests/reference_sun.rs"
[[test]]
name = "rpc_integration"
path = "tests/rpc_integration.rs"
[[test]]
name = "sun_ir_encode_conversion"
path = "tests/sun_ir_encode_conversion.rs"
[[test]]
name = "sun_ir_owned"
path = "tests/sun_ir_owned.rs"
[[test]]
name = "transparent"
path = "tests/transparent.rs"
[[test]]
name = "validation"
path = "tests/validation.rs"
[[test]]
name = "validation_with_ext"
path = "tests/validation_with_ext.rs"
[[test]]
name = "vecdeque_roundtrip"
path = "tests/vecdeque_roundtrip.rs"
[[bench]]
name = "varint"
path = "benches/varint.rs"
harness = false
[dependencies.ahash]
version = "0.8.12"
optional = true
[dependencies.arc-swap]
version = "1.8"
optional = true
[dependencies.bytes]
version = "1.11.0"
default-features = false
[dependencies.chrono]
version = "0.4"
optional = true
[dependencies.const_panic]
version = "0.2.15"
features = [
"rust_latest_stable",
"derive",
]
[dependencies.crossbeam-utils]
version = "0.8"
optional = true
[dependencies.fastnum]
version = "0.7.4"
optional = true
[dependencies.inventory]
version = "0.3"
optional = true
[dependencies.papaya]
version = "0.2.3"
optional = true
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.prosto_derive]
version = "0.11.12"
[dependencies.solana-address]
version = "2"
optional = true
[dependencies.solana-instruction-error]
version = "2.1"
optional = true
[dependencies.solana-keypair]
version = "3.1"
optional = true
[dependencies.solana-signature]
version = "3.1"
optional = true
[dependencies.solana-transaction-error]
version = "3.0"
optional = true
[dependencies.teloxide-core]
version = "0.13"
optional = true
[dependencies.tokio-stream]
version = "0.1"
optional = true
[dependencies.tonic]
version = "0.14.2"
optional = true
[dev-dependencies.chrono]
version = "0.4"
[dev-dependencies.criterion]
version = "0.7"
[dev-dependencies.proptest]
version = "1.9"
[dev-dependencies.prost]
version = "0.14"
default-features = false
[dev-dependencies.rand]
version = "0.9"
[dev-dependencies.serde]
version = "1"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tokio]
version = "1.49"
features = ["full"]
[dev-dependencies.tokio-stream]
version = "0.1"
[dev-dependencies.tonic]
version = "0.14.2"
[dev-dependencies.tonic-prost]
version = "0.14.2"
[lints.clippy]
await_holding_lock = "deny"
missing_const_for_fn = "warn"
too_many_arguments = "allow"
trivially_copy_pass_by_ref = "warn"
unused_async = "deny"
[lints.clippy.complexity]
level = "deny"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.clippy.perf]
level = "deny"
priority = -1
[lints.clippy.style]
level = "deny"
priority = -1
[profile.bench]
opt-level = 3
lto = "fat"
codegen-units = 1
incremental = false