Files
nomos-node/Cargo.toml
T

453 lines
31 KiB
TOML

[workspace.package]
categories = ["cryptography", "cryptography::cryptocurrencies", "security"]
description = "Logos blockchain workspace crates. For more information please visit https://logos.co/."
edition = "2024"
keywords = ["blockchain", "privacy"]
license = "MIT or Apache-2.0"
readme = "README.md"
repository = "https://github.com/logos-blockchain/logos-blockchain"
version = "0.0.0"
[profile.release]
codegen-units = 1 # (Much) slower build time, much better performances
lto = "fat" # Same as above
strip = true # Remove symbols to reduce binary size
[profile.release.package."*"]
# LTO cannot be overridden for downstream dependencies.
codegen-units = 1
opt-level = 3
[profile.bench]
inherits = "release"
[profile.release-profiling]
debug = true # Include debug symbols for profiling
inherits = "release"
strip = "none" # Don't strip symbols to allow for better profiling results
[workspace]
# Make sure any excluded crates are still clipped in our CI. Also, make sure they use the same Clippy and rustc lints we specify in this file down below.
members = [
"blend/core",
"blend/crypto",
"blend/message",
"blend/network",
"blend/proofs",
"blend/scheduling",
"c-bindings",
"codec",
"codec/macros",
"consensus/cryptarchia-engine",
"consensus/cryptarchia-sync",
"core",
"deployment/faucet",
"deployment/l2-sequencer-archival-demo/archiver",
"deployment/l2-sequencer-archival-demo/sequencer",
"deployment/tui-zone",
"kms/keys",
"kms/macros",
"kms/operators",
"ledger",
"libp2p",
"merkle/blake2btree",
"merkle/dynamic-merkle",
"merkle/tree",
"merkle/utxotree",
"mmr",
"nodes/api-common",
"nodes/node/binary",
"nodes/node/http-client",
"services/api",
"services/blend",
"services/chain/broadcast-service",
"services/chain/chain-leader",
"services/chain/chain-network",
"services/chain/chain-service",
"services/key-management-system",
"services/network",
"services/sdp",
"services/storage",
"services/system-sig",
"services/time",
"services/tracing",
"services/tx-service",
"services/utils",
"services/wallet",
"tests",
"tests/testing_framework",
"tools/blockchain-tools",
"tools/config",
"tracing",
"tracing/targets",
"tracing/targets/macros",
"utils",
"wallet",
"wallet-http-client",
"zk/circuits/prover",
"zk/circuits/verifier",
"zk/groth16",
"zk/poseidon2",
"zk/proofs/error",
"zk/proofs/poc",
"zk/proofs/pol",
"zk/proofs/poq",
"zk/proofs/zksign",
"zone-sdk",
]
resolver = "2"
[workspace.dependencies]
# Internal
cfgsync-adapter = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-testing.git", rev = "db880d61155db3a4f32177ef16b0f1e4bf22b1f6" }
cfgsync-artifacts = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-testing.git", rev = "db880d61155db3a4f32177ef16b0f1e4bf22b1f6" }
common-http-client = { default-features = false, package = "logos-blockchain-common-http-client", path = "./nodes/node/http-client" }
hasher = { default-features = false, version = "0.1.4" }
jf-poseidon2 = { default-features = false, git = "https://github.com/EspressoSystems/jellyfish.git", rev = "8d80230358e900f8d63765a937f63f4978ca1daa" }
lb-api-service = { default-features = false, package = "logos-blockchain-api-service", path = "./services/api" }
lb-blake2btree = { default-features = false, package = "logos-blockchain-blake2btree", path = "merkle/blake2btree" }
lb-blend = { default-features = false, package = "logos-blockchain-blend", path = "./blend/core" }
lb-blend-crypto = { default-features = false, package = "logos-blockchain-blend-crypto", path = "./blend/crypto" }
lb-blend-message = { default-features = false, package = "logos-blockchain-blend-message", path = "./blend/message" }
lb-blend-network = { default-features = false, package = "logos-blockchain-blend-network", path = "./blend/network" }
lb-blend-proofs = { default-features = false, package = "logos-blockchain-blend-proofs", path = "./blend/proofs" }
lb-blend-scheduling = { default-features = false, package = "logos-blockchain-blend-scheduling", path = "./blend/scheduling" }
lb-blend-service = { default-features = false, package = "logos-blockchain-blend-service", path = "./services/blend" }
lb-chain-broadcast-service = { default-features = false, package = "logos-blockchain-chain-broadcast-service", path = "./services/chain/broadcast-service" }
lb-chain-leader-service = { default-features = false, package = "logos-blockchain-chain-leader-service", path = "./services/chain/chain-leader" }
lb-chain-network-service = { default-features = false, package = "logos-blockchain-chain-network-service", path = "./services/chain/chain-network" }
lb-chain-service = { default-features = false, package = "logos-blockchain-chain-service", path = "./services/chain/chain-service" }
lb-circuits-prover = { default-features = false, package = "logos-blockchain-circuits-prover", path = "./zk/circuits/prover" }
lb-codec = { default-features = false, package = "logos-blockchain-codec", path = "./codec" }
lb-codec-macros = { default-features = false, package = "logos-blockchain-codec-macros", path = "./codec/macros" }
lb-common-http-client = { default-features = false, package = "logos-blockchain-common-http-client", path = "./nodes/node/http-client" }
lb-config = { default-features = false, package = "logos-blockchain-config", path = "./tools/config" }
lb-core = { default-features = false, package = "logos-blockchain-core", path = "./core" }
lb-cryptarchia-engine = { default-features = false, package = "logos-blockchain-cryptarchia-engine", path = "./consensus/cryptarchia-engine" }
lb-cryptarchia-sync = { default-features = false, package = "logos-blockchain-cryptarchia-sync", path = "./consensus/cryptarchia-sync" }
lb-demo-sequencer = { default-features = false, package = "logos-blockchain-demo-sequencer", path = "./deployment/l2-sequencer-archival-demo/sequencer" }
lb-dynamic-merkle = { default-features = false, package = "logos-blockchain-dynamic-merkle", path = "merkle/dynamic-merkle" }
lb-faucet = { default-features = false, package = "logos-blockchain-faucet", path = "./deployment/faucet" }
lb-groth16 = { default-features = false, package = "logos-blockchain-groth16", path = "./zk/groth16" }
lb-http-api-common = { default-features = false, package = "logos-blockchain-http-api-common", path = "./nodes/api-common" }
lb-key-management-system-keys = { default-features = false, package = "logos-blockchain-key-management-system-keys", path = "./kms/keys" }
lb-key-management-system-macros = { default-features = false, package = "logos-blockchain-key-management-system-macros", path = "./kms/macros" }
lb-key-management-system-operators = { default-features = false, package = "logos-blockchain-key-management-system-operators", path = "./kms/operators" }
lb-key-management-system-service = { default-features = false, package = "logos-blockchain-key-management-system-service", path = "./services/key-management-system" }
lb-ledger = { default-features = false, package = "logos-blockchain-ledger", path = "./ledger" }
lb-libp2p = { default-features = false, package = "logos-blockchain-libp2p", path = "./libp2p" }
lb-log-targets = { default-features = false, package = "logos-blockchain-log-targets", path = "./tracing/targets" }
lb-log-targets-macros = { default-features = false, package = "logos-blockchain-log-targets-macros", path = "./tracing/targets/macros" }
lb-merkle-tree = { default-features = false, package = "logos-blockchain-merkle-tree", path = "merkle/tree" }
lb-mmr = { default-features = false, package = "logos-blockchain-mmr", path = "./mmr" }
lb-network-service = { default-features = false, package = "logos-blockchain-network-service", path = "./services/network" }
lb-node = { default-features = false, package = "logos-blockchain-node", path = "./nodes/node/binary" }
lb-poc = { default-features = false, package = "logos-blockchain-poc", path = "./zk/proofs/poc" }
lb-pol = { default-features = false, package = "logos-blockchain-pol", path = "./zk/proofs/pol" }
lb-poq = { default-features = false, package = "logos-blockchain-poq", path = "./zk/proofs/poq" }
lb-poseidon2 = { default-features = false, package = "logos-blockchain-poseidon2", path = "./zk/poseidon2" }
lb-sdp-service = { default-features = false, package = "logos-blockchain-sdp-service", path = "./services/sdp" }
lb-services-utils = { default-features = false, package = "logos-blockchain-services-utils", path = "./services/utils" }
lb-storage-service = { default-features = false, package = "logos-blockchain-storage-service", path = "./services/storage" }
lb-system-sig-service = { default-features = false, package = "logos-blockchain-system-sig-service", path = "./services/system-sig" }
lb-testing-framework = { default-features = false, package = "testing-framework", path = "./tests/testing_framework" }
lb-time-service = { default-features = false, package = "logos-blockchain-time-service", path = "./services/time" }
lb-tracing = { default-features = false, package = "logos-blockchain-tracing", path = "./tracing" }
lb-tracing-service = { default-features = false, package = "logos-blockchain-tracing-service", path = "./services/tracing" }
lb-tui-zone = { default-features = false, package = "logos-blockchain-tui-zone", path = "./deployment/tui-zone" }
lb-tx-service = { default-features = false, package = "logos-blockchain-tx-service", path = "./services/tx-service" }
lb-utils = { default-features = false, package = "logos-blockchain-utils", path = "./utils" }
lb-utxotree = { default-features = false, package = "logos-blockchain-utxotree", path = "merkle/utxotree" }
lb-wallet = { default-features = false, package = "logos-blockchain-wallet", path = "./wallet" }
lb-wallet-service = { default-features = false, package = "logos-blockchain-wallet-service", path = "./services/wallet" }
lb-zksign = { default-features = false, package = "logos-blockchain-zksign", path = "./zk/proofs/zksign" }
lb-zone-sdk = { default-features = false, package = "logos-blockchain-zone-sdk", path = "./zone-sdk" }
# When bumping any lbc-* tag, also update the logos-blockchain-circuits flake input tag in flake.nix
# and run `nix flake lock --update-input logos-blockchain-circuits`.
lbc-poc-sys = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-circuits.git", package = "logos-blockchain-circuits-poc-sys", tag = "v0.5.6" }
lbc-pol-sys = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-circuits.git", package = "logos-blockchain-circuits-pol-sys", tag = "v0.5.6" }
lbc-poq-sys = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-circuits.git", package = "logos-blockchain-circuits-poq-sys", tag = "v0.5.6" }
lbc-signature-sys = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-circuits.git", package = "logos-blockchain-circuits-signature-sys", tag = "v0.5.6" }
lbc-types = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-circuits.git", package = "logos-blockchain-circuits-types", tag = "v0.5.6" }
lbp-error = { default-features = false, package = "logos-blockchain-proofs-error", path = "./zk/proofs/error" }
testing-framework-core = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-testing.git", rev = "db880d61155db3a4f32177ef16b0f1e4bf22b1f6" }
testing-framework-runner-compose = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-testing.git", rev = "db880d61155db3a4f32177ef16b0f1e4bf22b1f6" }
testing-framework-runner-k8s = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-testing.git", rev = "db880d61155db3a4f32177ef16b0f1e4bf22b1f6" }
testing-framework-runner-local = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-testing.git", rev = "db880d61155db3a4f32177ef16b0f1e4bf22b1f6" }
# External
anyhow = { default-features = false, version = "1" }
ark-bn254 = { default-features = false, version = "0.5" }
ark-ec = { default-features = false, version = "0.5" }
ark-ff = { default-features = false, version = "0.5" }
ark-groth16 = { default-features = false, version = "0.5" }
ark-serialize = { default-features = false, version = "0.5" }
astro-float = { default-features = false, version = "0.9" }
async-ctrlc = { default-features = false, version = "1.2" }
async-stream = { default-features = false, version = "0.3.6" }
async-trait = { default-features = false, version = "0.1" }
axum = { default-features = false, version = "0.7.5" }
backon = { default-features = false, version = "1.3.0" }
bincode = { default-features = false, version = "1.3" }
blake2 = { default-features = false, version = "0.10" }
bytes = { default-features = false, version = "1.3" }
cbindgen = { default-features = false, version = "0.29" }
chrono = { default-features = false, version = "0.4" }
cipher = { default-features = false, version = "0.4" }
clap = { default-features = false, version = "4" }
color-eyre = { default-features = false, version = "0.6.0" }
console-subscriber = { default-features = false, version = "0.5" }
const-hex = { default-features = false, version = "1" }
cucumber = { default-features = false, version = "=0.22.0" }
derivative = { default-features = false, version = "2" }
dhat = { default-features = false, version = "0.3.3" }
divan = { default-features = false, version = "0.1" }
ed25519 = { default-features = false, version = "2.2.3" }
ed25519-dalek = { default-features = false, version = "2" }
either = { default-features = false, version = "1.15.0" }
flate2 = { default-features = false, version = "1.1.9" }
fork_stream = { default-features = false, version = "0.1.0" }
futures = { default-features = false, version = "0.3.32" }
futures-timer = { default-features = false, version = "3.0.3" }
futures-util = { default-features = false, version = "0.3.32" }
generic-array = { default-features = false, version = "1.2" }
hex = { default-features = false, version = "0.4" }
http = { default-features = false, version = "1.3" }
humantime = { default-features = false, version = "2.1" }
igd-next = { default-features = false, version = "0.16.1" }
indexmap = { default-features = false, version = "2.14.0" }
itertools = { default-features = false, version = "0.14" }
libp2p = { default-features = false, version = "0.56" }
libp2p-stream = { default-features = false, version = "0.4.0-alpha" }
libp2p-swarm-test = { default-features = false, version = "0.6" }
log = { default-features = false, version = "0.4" }
lru = { default-features = false, version = "0.18.2" }
multiaddr = { default-features = false, version = "0.18" }
natpmp = { default-features = false, version = "0.5" }
netdev = { default-features = false, version = "0.31" }
nistrs = { default-features = false, version = "0.1.2" }
num-bigint = { default-features = false, version = "0.4" }
num-traits = { default-features = false, version = "0.2.19" }
num_enum = { default-features = false, version = "0.7.4" }
nutype = { default-features = false, version = "0.6.2" }
opentelemetry = { default-features = false, version = "0.32.0" }
opentelemetry-appender-tracing = { default-features = false, version = "0.32.0" }
opentelemetry-http = { default-features = false, version = "0.32.0" }
opentelemetry-otlp = { default-features = false, version = "0.32.0" }
opentelemetry-semantic-conventions = { default-features = false, version = "0.32.1" }
opentelemetry_sdk = { default-features = false, version = "0.32.1" }
overwatch = { default-features = false, git = "https://github.com/logos-co/Overwatch", rev = "ae887f41f5a626c341179026ad7f03953ff2072e" }
overwatch-derive = { default-features = false, git = "https://github.com/logos-co/Overwatch", rev = "ae887f41f5a626c341179026ad7f03953ff2072e" }
owo-colors = { default-features = false, version = "4.2.3" }
pprof = { default-features = false, version = "0.15" }
proc-macro2 = { default-features = false, version = "1" }
proptest = { default-features = false, version = "1.0" }
proptest-macro = { default-features = false, version = "0.2" }
quickcheck = { default-features = false, version = "1.0" }
quickcheck_macros = { default-features = false, version = "1.0" }
quote = { default-features = false, version = "1" }
rand = { default-features = false, version = "0.8" }
rand_chacha = { default-features = false, version = "0.3" }
rand_core = { default-features = false, version = "0.6.4" }
redb = { default-features = false, version = "2.2" }
reqwest = { default-features = false, version = "0.12" }
rocksdb = { default-features = false, version = "0.24" }
rpds = { default-features = false, version = "1" }
rs-merkle-tree = { default-features = false, version = "0.1" }
tar = { default-features = false, version = "0.4.46" }
# Must stay in sync with the rust-rapidsnark flake input in flake.nix.
rust-rapidsnark = { default-features = false, git = "https://github.com/logos-blockchain/logos-blockchain-rust-rapidsnark.git", rev = "e91187f8ccb5bbfc7bb00dac88169112428da78f" } # feat/nixify
serde = { default-features = false, version = "1.0" }
serde-big-array = { default-features = false, version = "0.5" }
serde_arrays = { default-features = false, version = "0.2.0" }
serde_ignored = { default-features = false, version = "0.1" }
serde_json = { default-features = false, version = "1.0" }
serde_urlencoded = { default-features = false, version = "0.7.1" }
serde_with = { default-features = false, version = "3.14.0" }
serde_yaml = { default-features = false, version = "0.9.33" }
serial_test = { default-features = false, version = "3.1.1" }
sntpc = { default-features = false, version = "0.5" }
strum = { default-features = false, version = "0.27" }
strum_macros = { default-features = false, version = "0.27.2" }
subtle = { default-features = false, version = "2.6.1" }
syn = { default-features = false, version = "2" }
sysinfo = { default-features = false, version = "0.37" }
tempfile = { default-features = false, version = "3" }
test-log = { default-features = false, version = "0.2" }
thiserror = { default-features = false, version = "2.0" }
tikv-jemallocator = { default-features = false, version = "0.6" }
time = { default-features = false, version = "0.3" }
tokio = { default-features = false, version = "1" }
tokio-stream = { default-features = false, version = "0.1.18" }
tokio-util = { default-features = false, version = "0.7" }
tonic = { default-features = false, version = "0.14.5" }
tower = { default-features = false, version = "0.4" }
tower-http = { default-features = false, version = "0.6.8" }
tracing = { default-features = false, version = "0.1" }
tracing-appender = { default-features = false, version = "0.2" }
tracing-futures = { default-features = false, version = "0.2" }
tracing-gelf = { default-features = false, version = "0.7" }
tracing-loki = { default-features = false, version = "0.2.5" }
tracing-opentelemetry = { default-features = false, version = "0.33.0" }
tracing-subscriber = { default-features = false, version = "0.3" }
url = { default-features = false, version = "2" }
utoipa = { default-features = false, version = "4.0" }
utoipa-swagger-ui = { default-features = false, version = "7.0" }
uuid = { default-features = false, version = "1" }
validator = { default-features = false, version = "0.20.0" }
x25519-dalek = { default-features = false, version = "2" }
zerocopy = { default-features = false, version = "0.8.26" }
zeroize = { default-features = false, version = "1" }
[workspace.lints.clippy]
# Cargo and allowed cargo warnings (new lints will warn by default)
cargo = { level = "warn", priority = -1 }
# TODO: We should tackle this lint at some point, to reduce dependencies duplication, reduce compilation times and bring down our binary size.
multiple_crate_versions = { level = "allow" }
# Nursery and allowed nursery warnings (new lints will warn by default)
nursery = { level = "warn", priority = -1 }
# Pedantic and allowed pedantic warnings (new lints will warn by default)
pedantic = { level = "warn", priority = -1 }
similar_names = { level = "allow" }
# Restriction and allowed restriction warnings (new lints will warn by default)
restriction = { level = "warn", priority = -1 }
absolute_paths = { level = "allow" }
alloc_instead_of_core = { level = "allow" }
arbitrary_source_item_ordering = { level = "allow" }
big_endian_bytes = { level = "allow" }
blanket_clippy_restriction_lints = { level = "allow" }
decimal_literal_representation = { level = "allow" }
default_numeric_fallback = { level = "allow" }
deref_by_slicing = { level = "allow" }
else_if_without_else = { level = "allow" }
exhaustive_enums = { level = "allow" }
exhaustive_structs = { level = "allow" }
exit = { level = "allow" }
expect_used = { level = "allow" }
field_scoped_visibility_modifiers = { level = "allow" }
float_arithmetic = { level = "allow" }
get_unwrap = { level = "allow" }
host_endian_bytes = { level = "allow" }
implicit_return = { level = "allow" }
integer_division_remainder_used = { level = "allow" }
iter_over_hash_type = { level = "allow" }
let_underscore_must_use = { level = "allow" }
let_underscore_untyped = { level = "allow" }
little_endian_bytes = { level = "allow" }
map_err_ignore = { level = "allow" }
min_ident_chars = { level = "allow" }
missing_asserts_for_indexing = { level = "allow" }
missing_docs_in_private_items = { level = "allow" }
missing_inline_in_public_items = { level = "allow" }
missing_trait_methods = { level = "allow" }
mixed_read_write_in_expression = { level = "allow" }
mod_module_files = { level = "allow" }
module_name_repetitions = { level = "allow" }
modulo_arithmetic = { level = "allow" }
panic = { level = "allow" }
panic_in_result_fn = { level = "allow" }
partial_pub_fields = { level = "allow" }
print_stderr = { level = "allow" }
print_stdout = { level = "allow" }
pub_use = { level = "allow" }
pub_with_shorthand = { level = "allow" }
question_mark_used = { level = "allow" }
self_named_module_files = { level = "allow" }
semicolon_inside_block = { level = "allow" }
single_call_fn = { level = "allow" }
single_char_lifetime_names = { level = "allow" }
std_instead_of_alloc = { level = "allow" }
std_instead_of_core = { level = "allow" }
struct_field_names = { level = "allow" }
unseparated_literal_suffix = { level = "allow" }
use_debug = { level = "allow" }
wildcard_enum_match_arm = { level = "allow" }
# TODO: Address these lints at some point. To allow them, move them to the section where they belong (e.g., pedantic), and keep allowing them. To enforce them, since all lints are "warn" by default, just remove them from this list.
arithmetic_side_effects = { level = "allow" }
as_conversions = { level = "allow" }
as_pointer_underscore = { level = "allow" }
as_underscore = { level = "allow" }
assertions_on_result_states = { level = "allow" }
cast_possible_truncation = { level = "allow" }
cast_possible_wrap = { level = "allow" }
cast_precision_loss = { level = "allow" }
cast_sign_loss = { level = "allow" }
doc_paragraphs_missing_punctuation = { level = "allow" }
error_impl_error = { level = "allow" }
impl_trait_in_params = { level = "allow" }
indexing_slicing = { level = "allow" }
infinite_loop = { level = "allow" }
inline_modules = { level = "allow" }
inline_trait_bounds = { level = "allow" }
integer_division = { level = "allow" }
large_stack_frames = { level = "allow" }
missing_assert_message = { level = "allow" }
missing_errors_doc = { level = "allow" }
missing_panics_doc = { level = "allow" }
pattern_type_mismatch = { level = "allow" }
redundant_test_prefix = { level = "allow" }
ref_patterns = { level = "allow" }
renamed_function_params = { level = "allow" }
same_name_method = { level = "allow" }
shadow_reuse = { level = "allow" }
shadow_same = { level = "allow" }
shadow_unrelated = { level = "allow" }
tests_outside_test_module = { level = "allow" }
todo = { level = "allow" }
unimplemented = { level = "allow" }
unreachable = { level = "allow" }
unwrap_in_result = { level = "allow" }
unwrap_used = { level = "allow" }
[workspace.lints.rust]
# Explicitly allowed lints
unused_crate_dependencies = { level = "allow" } # Too many false positives especially around benchmarking and binaries, which do not have their own `dependencies` section yet. Plus, we have cargo-machete checking unused deps.
unused_results = { level = "allow" } # We have Clippy lints to warn on unused `must_use` results. This is too pedantic as it complains on EVERY unused result.
# Lints which are allow-by-default but have been changed to "warn"
ambiguous_negative_literals = { level = "warn" }
closure_returning_async_block = { level = "warn" }
deref_into_dyn_supertrait = { level = "warn" }
ffi_unwind_calls = { level = "warn" }
impl_trait_redundant_captures = { level = "warn" }
let_underscore_drop = { level = "warn" }
linker_messages = { level = "warn" }
macro_use_extern_crate = { level = "warn" }
missing_unsafe_on_extern = { level = "warn" }
redundant_imports = { level = "warn" }
redundant_lifetimes = { level = "warn" }
single_use_lifetimes = { level = "warn" }
tail_expr_drop_order = { level = "warn" }
trivial_numeric_casts = { level = "warn" }
unit_bindings = { level = "warn" }
unsafe_attr_outside_unsafe = { level = "warn" }
unsafe_op_in_unsafe_fn = { level = "warn" }
unstable_features = { level = "warn" }
unused_extern_crates = { level = "warn" }
unused_import_braces = { level = "warn" }
unused_lifetimes = { level = "warn" }
unused_macro_rules = { level = "warn" }
unused_qualifications = { level = "warn" }
# TODO: Address these allow-by-default Rustc lints at some point. To allow them, simply remove them from this list. To enforce them, move them to the list of explicitly warned ones and mark them as "warn" level.
absolute_paths_not_starting_with_crate = { level = "allow" }
elided_lifetimes_in_paths = { level = "allow" }
impl_trait_overcaptures = { level = "allow" }
missing_copy_implementations = { level = "allow" }
missing_debug_implementations = { level = "allow" }
missing_docs = { level = "allow" }
trivial_casts = { level = "allow" }
unreachable_pub = { level = "allow" }
unsafe_code = { level = "allow" }
variant_size_differences = { level = "allow" }